2. 探索超图
3m

概述

在 Poetic Plates 中添加新时会发生什么?

在本课程中,我们将:

  • 通过 追踪客户请求的路径
  • 描述 如何创建 来解决 ,这些操作跨多个

在伊始...

我们从最初的烹饪课开始:一个称为 recipe。客户向 发送查询,后者将查询路由到 recipe 。简单极了!因为我们只有一个子图,所以该子图的模式 在本质上基本相同。

现在,我们想要向组合中添加另一个 。那会发生什么情况?

首先,我们需要将 发布至 。这样便会触发

注意:如果你已完成 GraphOS:安全 API 传递,那么下一部分内容会感觉很熟悉!

启动流程

启动代表向 更新模式的完整过程。

当模式注册表获取新的 ,或现有子图模式的更新版本时,它就会开始构建 超图模式。模式注册表尝试将所有模式从其注册 中合并到一个 中。此流程还称为 组合

如果 失败,那么我们将会在 Studio 中看到错误,并且流程会就此停止。别担心:我们可以使用错误消息来修复 中的问题,然后尝试再次发布子图。

如果 成功进行并且没有验证错误,那么模式注册表便会创建 。(在下一部分中,我们将了解 如何使用超图模式。)

架构注册表自动将 发送到 内的名为 Apollo Uplink 的内部服务中。Uplink 是存储每个图的最新超图架构的服务器。 从 Uplink 获取最新架构,并使用此新架构来响应客户端请求。

因此,已成功完成!

令人兴奋的东西!现在,让我们重新体验将 发送到 的体验,这一次是在具有多个 的上下文中。

GraphQL 操作通过超图的旅程

让我们从头开始:从客户端请求。

步骤 1:客户端请求

首先,客户端向 发送 。客户端不知道哪些 属于哪个 ——甚至不知道有子图!

Client sends a GraphQL operation to the router

步骤 2:构建查询计划

查看 中,并使用 超图架构找出哪些 负责解析每个

Router uses the supergraph schema

它利用这些信息构建一个查询计划,这是一系列较小的 ,用于在上执行。该还指定了子图操作的运行顺序。

Router builds a query plan

步骤 3:执行查询计划

接下来,通过向每个(需要从中获取数据)发送较小的 来执行

Router sends operations to subgraphs

与任何其他一样,会解析:它们利用自己的来检索并填充请求的数据。

Subgraphs resolve data

步骤 4:子图响应

然后,会将请求的数据发送回,路由器再将所有这些响应合并成一个 JSON 对象。

Subgraphs return data

步骤 5:将数据发送回客户端

最后,将 JSON 对象发送回客户端。

Subgraphs return data

这就完成了我们的的历程!

The full journey of an operation through the supergraph, in one diagram

关键要点

  • 路由器来为传入的 创建。查询计划是路由器可以在不同的上执行的一系列较小操作,以完全解决传入的操作。
  • 通过执行适当上的列表,来执行
  • 的所有响应合并到一个 JSON 对象中,然后发回给客户端。

下一步

让我们在操作中查看此过程!在下一课中,我们将把kitchenware 添加到我们的

上一步

分享你对本课的疑问和评论

本课程目前处于

beta
.你的反馈有助于我们提升!如果你遇到困难或感到困惑,请告诉我们,我们会帮你解决。所有评论都是公开的,且必须遵循 Apollo 行为准则。请注意,已解决或处理的评论可能会被删除。

在下方发帖需要一个 GitHub 帐户。还没有帐户? 那就到我们的 Odyssey 论坛发帖。