API 版本写在 URL 还是请求头才生效
现象#
在请求头加了 X-Shopify-API-Version: 2026-10,响应头返回的仍是 2026-07,新版本字段继续报 Field doesn't exist;把版本写进 URL 后才恢复正常。
原因#
- 版本由 URL 路径决定,形如
/admin/api/2026-10/graphql.json,请求头不是选版入口 - 完全不写版本时会回落到最旧的受支持稳定版,而不是最新稳定版
- 目标版本已退役时会被 forward 到最旧可用版本,响应头里的值才是实际版本
- SDK 或网关重写了 base URL,把版本段吃掉,代码里配置的版本没有生效
处理步骤#
- 检查最终请求地址是否包含
/admin/api/{version}/graphql.json完整路径 - 每次响应读取
X-Shopify-API-Version,与期望值不一致就告警 - SDK 初始化时显式设置 apiVersion,不要依赖默认值或环境变量残留
- 网关与 mock 不要改写
/admin/api/{version}路径段,重写按前缀匹配 - 升级前在开发店只替换 URL 里的版本号做对比,确认差异确实来自版本
验收标准#
响应头 X-Shopify-API-Version 与 URL 中的版本完全一致,新字段可查,旧字段的 deprecated 警告按预期出现。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。