7. 注册表中的模式更改
3m

🙌🏽 检查注册表

我们的 API 变更已部署到生产环境,让我们来看看 Apollo 模式注册表。

变更日志 页面

进入你的部署

https://studio.apollographql.com
Screenshot of the changelog page in Apollo Studio, showing fields that have been added, removed and modified

显示在变更日志中的条目是交互式的。例如,当我们点击durationInSeconds

https://studio.apollographql.com
Screenshot of the Schema Reference page, highlighting the `durationInSeconds` field

构建一个新的测试查询

我们将命名我们的,并通过侧边栏添加GetTrackAndModuleDurations。在这里我们可以看到length字段现在被灰色显示,并且有一个小警告图标显示我们的弃用消息。

https://studio.apollographql.com
Screenshot of Explorer showing the deprecated length field

我们仍然可以向我们的中添加弃用的,但弃用警告将始终存在,提醒我们应该使用新的字段。

让我们添加新的durationInSeconds字段。对于这个,我们还将查询它的模块列表,以及lengthdurationInSeconds字段。我们还可以看到模块的length字段也已弃用。

query GetTrackAndModuleDurations($trackId: ID!) {
track(id: $trackId) {
length
durationInSeconds
modules {
length
durationInSeconds
}
}
}

在运行之前,请确保给trackId变量赋上我们最喜欢的值c_0。将以下内容添加到变量面板中:

{
"trackId": "c_0"
}

在运行查询后,我们可以在响应中看到这两个都成功解析并具有相同的值!

https://studio.apollographql.com
Screenshot of the successful response to the GetTrackAndModuleDurations query in Explorer
以下哪项关于被分配了@deprecated指令的字段是正确的?

我们的模式已经更新,但我们还没有完成我们的计划!第3步是监控旧的使用情况,然后我们才能进行第4步,即完全删除旧字段。我们可以使用注册表来跟踪API状态和字段级的使用情况。

📉 字段使用

让我们转到字段页面,探索我们当前模式的当前状态,包括所有类型和

https://studio.apollographql.com
The Fields page displaying field executions and referencing operations for each field

字段执行的次数代表在给定期间服务器执行特定的解析函数的次数。

引用操作,另一方面,列出了一个给定期间内包含特定字段的操作次数。

注意:默认情况下,此时期设置为前一天,但我们可以通过切换页面顶部的筛选器来自定义范围。

处理弃用字段

页的字段指标中我们可以看出,我们的弃用length 仍然在使用。

https://studio.apollographql.com
Screenshot of the field usage for the `length` field in our schema

我们希望确保这个的使用量降为零。要做到这一点,我们需要对我们的客户端应用进行一些修改,将所有的length出现都替换为durationInSeconds。然后我们进行提交、推送和部署。

注意:我们将将这些更改留给您作为练习的作业!在部署到生产环境之前,请确保在本地上测试您的更改。

完成客户端的这些更改后,我们的API更改将在服务器和客户端两侧全面推出!

从实习生猫宇航员的视角来看,一切都应该和以前一样运行。但在幕后,我们正在使用新的

替换字段
在您的模式中替换字段时,应遵循以下步骤。首先,
 
 到您的模式。接下来,
 
 使用 
 
。然后,请确保 
 
,等待该字段的利用率下降后我们才能 
 
.

将此框中的项目拖放到上面的空白处

  • 重命名旧字段

  • @replacement指令

  • 监控旧字段的利用率

  • 监控新字段的利用率

  • 删除旧字段

  • 添加新的替换字段

  • 废弃旧字段

  • 使用@deprecated指令

恭喜你让我们的API变得更好一点!🎉 我们现在对如何修改和改进API有了很好的了解。在最后一课中,我们将探讨如何跟上我们API的脉动,并探讨我们可以将它带到哪里。

上一页

分享您对这节课的问题和评论

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

您需要GitHub账户才能在下面发表评论。还没有吗? 请在我们的Odyssey论坛上发表评论。