10. 发布到 GraphOS
5m

概述

我们即将完成!为了使我们的开发工作流程完整,我们需要在.

在本课中,我们将

  • 使用 将模式发布到模式注册表
  • 在 Studio 中检查 的结果

协调模式和代码更改

到目前为止,我们只讨论了 模式 更改以及它们如何发布到 . 但是我们不能忘记我们的 代码库 更改:我们的 , listingsreviews! 这些包括我们对数据提取器方法和模式文件本身所做的更改。我们需要将本地更改部署到生产环境。

因为我们只在教程中使用本地 ,所以我们不需要 实际 部署任何更改。您可以在 此 Apollo 技术说明 中了解有关在生产环境中协调模式和代码更改的更多信息。

发布模式更改

我们 确实 需要将我们的 更改发布到 .

要发布我们的 ,我们将再次使用 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 命令。请确保使用 您自己 的值替换参数。

listings
rover subgraph publish <APOLLO_GRAPH_REF> \
--schema ./src/schema.graphql \
--name listings

您需要确认我们正在发布一个 localhost URL。如果一切顺利,我们应该会看到终端输出,其中包含一条消息,确认 已发布,并且 已更新!

检查和发布 reviews

接下来是 reviews 。上次我们在 reviews 上运行检查时,我们看到了关于将 Listing 转换为 的错误。现在我们已经发布了 listings ,让我们在 reviews 上重复检查,看看该错误是否已消失。

打开一个到 reviews 的终端,并运行以下命令。(请务必替换您自己的 !)

reviews
rover subgraph check <APOLLO_GRAPH_REF> \
--schema ./src/schema.graphql \
--name reviews

我们的输出应该表明一切正常——我们的更改是安全的,那个讨厌的错误无处可寻。

Checking the proposed schema for subgraph reviews against Airlock@current
There 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 命令。

reviews
rover subgraph publish <APOLLO_GRAPH_REF> \
--schema ./src/schema.graphql \
--name reviews

在 Studio 中检查启动

模式发布到注册表后会发生什么?一个 开始了!让我们在 Studio 中快速了解一下该过程。

导航到 启动 页面。点击列表中最新的

https://studio.apollographql.com

The Studio Launches page showing the results of the latest launch

我们可以看到,此特定 启动序列 部分遵循我们之前讨论的步骤:

  • 构建完成 指的是构建 (也称为 )的过程。
  • 模式已发布 指的是 已提供给 Apollo Uplink。
  • 启动完成 不言而喻!我们的启动已成功完成! 🎉

在右侧,我们还可以通过点击 超级图模式 按钮来查看 输出。

https://studio.apollographql.com

The Studio Launches page, highlighting the Supergraph Schema button

这向我们展示了模式更改的摘要。

https://studio.apollographql.com

The Studio Launches page showing the supergraph schema button and a summary of changes

如果一切看起来都很好,我们应该能够 新的 reviewsoverallRating ,以获取特定列表。

🚀 生产环境中的功能!

首先,请确保您已停止 rover dev 进程,并启动了您的 。请记住,我们下载的路由器二进制文件连接到 ——因此我们已准备好测试已发布的更改“在生产环境中”!(好吧,在这个教程中,它尽可能地接近生产环境!)

在一个新的终端窗口中,导航到 router 文件夹,然后运行:

router
APOLLO_KEY=<APOLLO_KEY> APOLLO_GRAPH_REF=<APOLLO_GRAPH_REF> ./router --config router-config.yaml

注意:请记住,您可以在 .env 文件中找到 APOLLO_KEYAPOLLO_GRAPH_REF 的值。

接下来,让我们转到资源管理器(这次在 Studio 中,而不是沙盒!),并运行那个梦想

query GetListingAndReviews {
listing(id: "listing-1") {
title
description
numOfBeds
amenities {
name
category
}
overallRating
reviews {
id
text
}
}
}

您应该看到数据返回了!我们的发布成功了!🎉

https://studio.apollographql.com

Explorer - returning data from the dream query

任务!

主要要点

  • 一个 发布 代表对一个 进行的完整架构更新过程。一个 在架构发布到 时触发。
  • 要发布一个 ,请使用 rover subgraph publish 命令。
  • 我们可以通过 Studio 发布页面检查 的结果。

接下来

您已经做到了!虽然我们从一个简单的 开始,但我们利用了联合和 的原则,将一个全新的 API 加入其中。使用实体,我们将列表连接到它们的评论,并推出了一项新功能,这将帮助客人决定下次预订在哪里。我们使用 rover dev 确保这些新颖而令人兴奋的变化是安全的。

感谢您继续与我们一起踏上 和 TypeScript 的旅程。查看 提供的其他课程,并继续构建您的图!

上一页

分享您对本课的疑问和意见

本课程目前处于

测试版
.您的反馈帮助我们改进!如果您遇到问题或感到困惑,请告诉我们,我们会帮助您。所有评论都是公开的,必须遵循 Apollo 行为准则。请注意,已解决或已处理的评论可能会被删除。

您需要一个 GitHub 帐户才能在下方发帖。没有? 改为在我们的 Odyssey 论坛上发帖。