跳到主要内容

API 版本管理

公共 API 采用日期版本,与 Shopify 使用同一套方案,因此你所依赖的版本不会在脚下悄然变化。日期版本是不兼容变更的粗粒度边界;在同一个版本内,schema 仍会以只增不减的方式演进。

版本名称​

版本名为 YYYY-MM,其中月份为季度起始月:2026-01、2026-04、2026-07、2026-10。只有出现不兼容变更时才会切出新的日期版本——没有不兼容变更的季度会被跳过,因此版本相对少见。

此外还有一个 unstable 版本,跟随最新的开发进度,可在稳定发布前预览变更。请勿在其上构建生产环境集成。

选择版本​

有两种方式,按优先级排列:

  1. URL 路径(推荐): 把版本写进端点—— …/backend/<subdomain>/api/2026-07/graphql。它明确、利于缓存,也便于直接复制。
  2. 请求头: 向不带版本的 …/backend/<subdomain>/graphql 端点发送 X-Api-Version: 2026-07。

如果省略版本——或指定了未知的、已过下线日期的版本——请求将由仍受支持的最旧版本处理,而不是最新版本。你绝不会被悄悄升级到某个不兼容变更上。对于打算长期维护的集成,请显式固定版本。

每个响应都会通过 X-Api-Version 响应头告知处理它的版本,因此你随时知道是哪个契约作出的应答;若你此前依赖默认行为,也能据此发现偏差。

支持周期​

每个稳定版本至少受支持 12 个月,且与下一个版本至少重叠 9 个月。实际上任意时刻都有两到三个版本在线,为迁移留出了从容的窗口。版本的下线日期在其发布当天即公布。

什么算不兼容变更​

在同一版本内,我们可能做出只增不减的变更,你的客户端必须能够容忍:

  • 新增类型、查询或变更(mutation);
  • 为现有字段新增可选参数;
  • 为对象类型新增字段;
  • 为枚举新增取值(因此切勿假定枚举是封闭的)。

新的日期版本只保留给真正的不兼容变更:删除或重命名字段或类型、收紧可空性,或改变某个参数或默认值的含义。这些变更绝不会发生在既有版本内部——你所固定的版本会保持其行为直到下线日期。

弃用​

弃用会通过两种方式告知,让你在任何东西失效之前就有所了解:

  • 在 schema 中。 将被淘汰的字段会标记 @deprecated,并附上指明替代方案的原因说明。内省与 GraphQL Playground 会自动把这些信息呈现给每个客户端。
  • 在响应中。 当某个请求确实解析了已弃用字段时,响应会带上 X-Api-Deprecated-Reason 响应头(以及对应的 extensions.deprecations 条目),指明它触及的具体弃用项——这样,弃用在你遇到它的那一刻就会出现在日志里,无需专门去查。

已弃用字段会保留一个已公布的最短期限,之后才会在后续的日期版本中被移除。