概述
在 Poetic Plates 中添加新子图时会发生什么?
在本课程中,我们将:
- 通过 超图追踪客户请求的路径
- 描述 路由器如何创建 查询计划来解决 GraphQL 操作,这些操作跨多个 子图。
在伊始...
我们从最初的烹饪课开始:一个称为 子图的 recipe
。客户向 路由器发送查询,后者将查询路由到 recipe
子图。简单极了!因为我们只有一个子图,所以该子图的模式 和 超图模式在本质上基本相同。
现在,我们想要向组合中添加另一个 子图。那会发生什么情况?
首先,我们需要将 子图模式发布至 GraphOS。这样便会触发 启动。
注意:如果你已完成 GraphOS:安全 API 传递,那么下一部分内容会感觉很熟悉!
启动流程
启动代表向 图形更新模式的完整过程。
当模式注册表获取新的 子图模式,或现有子图模式的更新版本时,它就会开始构建 超图模式。模式注册表尝试将所有模式从其注册 子图中合并到一个 超图模式中。此流程还称为 组合。
如果 组合失败,那么我们将会在 Studio 中看到错误,并且流程会就此停止。别担心:我们可以使用错误消息来修复 子图中的问题,然后尝试再次发布子图。
如果 组合成功进行并且没有验证错误,那么模式注册表便会创建 超图模式。(在下一部分中,我们将了解 路由器如何使用超图模式。)
架构注册表自动将 超图架构发送到 GraphOS内的名为 Apollo Uplink 的内部服务中。Uplink 是存储每个图的最新超图架构的服务器。 路由器从 Uplink 获取最新架构,并使用此新架构来响应客户端请求。
因此,启动已成功完成!
令人兴奋的东西!现在,让我们重新体验将 操作发送到 超图的体验,这一次是在具有多个 子图的上下文中。
GraphQL 操作通过超图的旅程
让我们从头开始:从客户端请求。
步骤 1:客户端请求
首先,客户端向 路由器发送 GraphQL 操作。客户端不知道哪些 字段属于哪个 子图——甚至不知道有子图!
步骤 2:构建查询计划
路由器查看 字段在 操作中,并使用 超图架构找出哪些 子图负责解析每个 字段。
它利用这些信息构建一个查询计划,这是一系列较小的GraphQL 操作,用于在子图上执行。该查询计划还指定了子图操作的运行顺序。
步骤 3:执行查询计划
接下来,路由器通过向每个子图(需要从中获取数据)发送较小的GraphQL 操作来执行查询计划
与任何其他GraphQL 服务器一样,子图会解析操作:它们利用自己的解析器和数据源来检索并填充请求的数据。
步骤 4:子图响应
然后,子图会将请求的数据发送回路由器,路由器再将所有这些响应合并成一个 JSON 对象。
步骤 5:将数据发送回客户端
最后,路由器将 JSON 对象发送回客户端。
这就完成了我们的操作的历程!
关键要点
- 路由器使用超图谱架构来为传入的GraphQL 操作创建查询计划。查询计划是路由器可以在不同的子图谱上执行的一系列较小操作,以完全解决传入的操作。
- 路由器通过执行适当子图谱上的操作列表,来执行查询计划。
- 路由器将子图谱的所有响应合并到一个 JSON 对象中,然后发回给客户端。
下一步
让我们在操作中查看此过程!在下一课中,我们将把kitchenware
子图谱添加到我们的超图谱中。
分享你对本课的疑问和评论
本课程目前处于
在下方发帖需要一个 GitHub 帐户。还没有帐户? 那就到我们的 Odyssey 论坛发帖。