从10月8日至10日加入我们,在纽约市学习有关 GraphQL 联盟和 API 平台工程的最新技术、趋势和新闻。加入我们参加2024年纽约市的 GraphQL 大会
文档
免费开始

模式弃用

优雅管理类型和字段弃用

模式设计

💡 提示

如果您是企业客户,需要更多关于此主题的资料,请尝试企业最佳实践:模式设计课程在.

不是企业客户? 了解GraphOS企业版。

利用SDL和工具管理弃用

您的治理组应概述一个涵盖整个公司的轮换策略,以优雅地处理统一图谱中类型的字段降级。

API可以进行版本控制,但我们在Apollo发现,组织利用GraphQL固有的进化特性,快速迭代API的情况更为普遍。然而,这样做需要与API消费者进行清晰的沟通,尤其是在执行字段降级时。

使用@deprecated 类型系统指令

作为第一步,@deprecated 指令,该指令在GraphQL规范中定义,应在降级架构中的或枚举值时应用。它的单个reason 参数也可以为API消费者提供关于使用哪些字段或枚举值的一些指导。例如,下面的示例可以指示相关的topProducts 查询已被降级如下:

extend type Query {
"""
Fetch a simple list of products with an offset
"""
topProducts(
"How many products to retrieve per page."
first: Int = 5
): [Product] @deprecated(reason: "Use `products` instead.")
"""
Fetch a paginated list of products based on a filter type.
"""
products(
"How many products to retrieve per page."
first: Int = 5
"Begin paginating results after a product ID."
after: Int = 0
"Filter products based on a type."
type: ProductType = LATEST
): ProductConnection
}

使用字段使用度指标来评估何时可安全移除字段

在更新服务模式的schema并添加新@deprecated指令之后,将弃用信息传达给所有相关人员同样重要。利用专门的Slack频道或团队会议可能是传达这种通知的合适渠道,并且应该与任何附加的迁移指导一并提供。

在此阶段,一个关键问题仍然存在:“何时可以安全地移除弃用的字段?”为了确定答案而不会对客户端应用程序造成任何破坏性更改,您必须依赖您的可观察性工具。

具体来说,位于客户端与操作页面中的洞察页面的GraphOS Studio可以为了解客户端可能仍在使用哪些弃用的字段提供洞察。

此外,模式检查将检查推送到已注册schema的最新操作跟踪数据中的任何更改,以确保可以在不破坏现有客户端的情况下完成弃用字段滚动更新。通常需要客户端识别自身以便在做出破坏性更改之前与他们联系。

下一条
首页
评分文章评分

©2024Apollo Graph Inc., trades as Apollo GraphQL.

隐私政策

公司