概述
我们即将完成!为了使我们的开发工作流程完整,我们需要在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/schema.graphql \--name listings
您需要确认我们正在发布一个 localhost URL。如果一切顺利,我们应该会看到终端输出,其中包含一条消息,确认 子图 已发布,并且 超级图 已更新!
检查和发布 reviews
接下来是 reviews
子图。上次我们在 reviews
上运行检查时,我们看到了关于将 Listing
转换为 实体 的错误。现在我们已经发布了 listings
子图,让我们在 reviews
子图 上重复检查,看看该错误是否已消失。
打开一个到 reviews
子图 的终端,并运行以下命令。(请务必替换您自己的 图引用!)
rover subgraph check <APOLLO_GRAPH_REF> \--schema ./src/schema.graphql \--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 3 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]
现在让我们发布这些更改。在同一个终端中,为您的 reviews
子图 运行 rover subgraph publish
命令。
rover subgraph publish <APOLLO_GRAPH_REF> \--schema ./src/schema.graphql \--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 和 TypeScript 的旅程。查看 Odyssey 提供的其他课程,并继续构建您的图!
分享您对本课的疑问和意见
本课程目前处于
您需要一个 GitHub 帐户才能在下方发帖。没有? 改为在我们的 Odyssey 论坛上发帖。