概述
我们即将完成!为了使我们的开发工作流程完整,我们需要考虑我们对GraphOS.
在本课中,我们将
- 使用 Rover CLI 将架构发布到架构注册表
- 检查 启动 在 Studio 中的结果
协调架构和代码更改
到目前为止,我们只讨论了 架构 更改以及它们应该如何发布到 GraphOS. 但我们不能忘记我们的 代码库 更改:我们的 GraphQL 子图服务器, listings
和 reviews
! 这些包括我们对数据提取器方法和架构文件本身所做的更改。我们需要将我们本地的更改部署到生产环境。
因为我们只在教程环境中使用本地 子图,所以我们不需要 实际 部署任何更改。您可以在 这篇 Apollo 技术说明 中了解有关在生产环境中协调架构和代码更改的更多信息。
发布架构更改
我们 确实 需要将我们的 子图 更改发布到 GraphOS.
为了发布我们的 子图,我们将再次使用 Rover CLI 的 rover subgraph publish
命令。这次我们不需要包含路由 URL,因为它没有改变。
rover subgraph publish <APOLLO_GRAPH_REF> \--schema <SCHEMA_FILE_PATH> \--name <SUBGRAPH_NAME>
注意:请记住,您可以在 Studio 中,图的 README 页面的顶部或您的 .env
文件中找到您的 图引用。
让我们来做吧!
发布 listings
请记住,listings
子图 首先:我们要确保注册表知道我们已将 Listing
变为 实体 类型。
在打开到 listings
目录的终端窗口中,粘贴 rover subgraph publish
命令。确保将参数替换为您自己的值。
rover subgraph publish <APOLLO_GRAPH_REF> \--schema src/main/resources/schema/schema.graphqls \--name listings
您需要确认我们正在发布一个 localhost URL。如果一切顺利,我们应该看到终端输出,其中包含一条消息,确认 子图 已发布,并且 超级图 已更新!
检查和发布 reviews
接下来是 reviews
子图。上次我们对 reviews
进行了检查,我们看到了有关将 Listing
变为 实体 的错误。既然我们已经发布了 listings
子图,让我们重复检查我们的 reviews
子图,看看那个错误是否消失了。
打开一个终端到 reviews
子图,并运行以下命令。(请务必替换您自己的 图引用!)
rover subgraph check <APOLLO_GRAPH_REF> \--schema src/main/resources/schema/schema.graphqls \--name reviews
我们的输出应该显示一切正常——我们的更改是安全的,并且那个讨厌的错误无处可寻。
Checking the proposed schema for subgraph reviews against Airlock@currentThere were no changes detected in the composed API schema, but the core schema was modified.Operation Check [PASSED]:Compared 2 schema changes against 2 operations.┌────────┬─────────────┬─────────────────────────────────────────────┐│ Change │ Code │ Description │├────────┼─────────────┼─────────────────────────────────────────────┤│ PASS │ FIELD_ADDED │ type `Listing`: field `reviews` added │├────────┼─────────────┼─────────────────────────────────────────────┤│ PASS │ FIELD_ADDED │ type `Listing`: field `overallRating` added │└────────┴─────────────┴─────────────────────────────────────────────┘View operation check details at: https://studio.apollographql.com/graph/[LINK_TO_YOUR_CHECK]
现在让我们发布这些更改。在同一个终端中,运行 rover subgraph publish
命令,用于您的 reviews
子图。
rover subgraph publish <APOLLO_GRAPH_REF> \--schema src/main/resources/schema/schema.graphqls \--name reviews
检查 Studio 中的启动
架构发布到注册表后会发生什么?一个 启动 开始了!让我们在 Studio 中看看这个过程。
导航到 启动 页面。点击列表中的最新 启动。
我们可以看到,此特定 启动 的 启动顺序 部分遵循我们之前讨论过的步骤:
- 构建完成 指的是构建 超级图架构(也称为 组合)的过程。
- 架构已发布 指的是 超级图架构 可供 Apollo Uplink 使用。
- 启动完成 不言而喻!我们的启动成功完成! 🎉
在右侧,我们还可以通过点击 超级图架构 按钮来查看 超级图架构 输出。
这向我们展示了架构更改的摘要。
如果一切看起来都很好,我们应该能够 查询 新的 reviews
和 overallRating
字段,用于特定列表。
🚀 生产环境中的功能!
首先,确保您已停止 rover dev
进程,并启动了 路由器。请记住,我们下载的路由器二进制文件连接到 图注册表——所以我们准备测试我们发布的更改“在生产环境中”!(好吧,在本次教程中,我们尽可能接近生产环境!)
在一个新的终端窗口中,导航到 router
文件夹,然后运行:
APOLLO_KEY=<APOLLO_KEY> APOLLO_GRAPH_REF=<APOLLO_GRAPH_REF> ./router --config router-config.yaml
注意:请记住,您可以在 .env
文件中找到 APOLLO_KEY
和 APOLLO_GRAPH_REF
的值。
接下来,让我们转到资源管理器(这一次在 Studio 中,而不是沙盒中!)并运行那个梦想 查询。
query GetListingAndReviews {listing(id: "listing-1") {titledescriptionnumOfBedsamenities {namecategory}overallRatingreviews {idtext}}}
您应该会看到数据返回!我们的启动成功了! 🎉
关键要点
- 一个 发布 代表将模式更新到 图 的完整流程。一个 发布 在模式发布到 GraphOS 时触发。
- 要发布一个 子图模式,请使用
rover subgraph publish
命令。 - 我们可以通过 Studio 发布页面检查 发布 的结果。
接下来
你已经做到了!虽然我们从一个简单的 GraphQL 服务器 开始,但我们使用了联邦和 GraphOS 的原则,将一个全新的 API 添加到其中。使用实体,我们将列表连接到他们的评论,并推出了一个新功能,可以帮助客人决定下次预订在哪里。我们使用 rover dev
、模式检查 和 发布 来确保这些新的和令人兴奋的变化是安全的。
感谢您继续与我们一起踏上 Apollo Federation、GraphOS 和 DGS 的旅程。在 使用 Java & DGS 在子图中进行缓存 中进一步提升您 子图 的性能,或者查看 Odyssey 提供的其他课程。最重要的是,继续构建您的 图!
分享您关于本课的疑问和评论
本课程目前正在
您需要一个 GitHub 帐户才能在下面发布。没有吗? 请改在我们的 Odyssey 论坛中发布。