每日整理真实提问 356 个问题 · 726 个回答 需要系统性的技术文档?看 Shopify 技术百科 1000 篇 → 400-873-8117
已解决 提问于 3 天前

REST 的 id 和 GraphQL 的 gid 怎么互转

2 个回答 3,240 次浏览 Admin API 与 GraphQL 最后活跃 今天
66

从 REST 拿到 product_id: 8123456789,塞进 GraphQL 的 id 参数直接报错,说格式非法。

陈
陈工提问者
Shopify 认证开发者 · 专注主题与 Liquid
3 天前提问 · 已收到 2 个回答

2 个回答

已采纳 · 提问者确认解决
64

先把判断放在前面:GraphQL 使用全局 ID(gid://shopify/Product/8123456789),REST 用纯数字,两者不能混用。

1处理顺序

  1. 拼接:gid://shopify/Product/{数字id},资源类型首字母大写。
  2. 从 GraphQL 回传 REST 时取最后一段数字:gid.split('/').pop()。
  3. 不同资源类型名字不同:ProductVariant、Order、Customer、Collection。
  4. 用 id 字段查询时同时请求 legacyResourceId,方便与旧系统对齐。
  5. 不要自己拼未知类型的 gid,先用 node(id:) 查一次确认类型。
验收:同一资源在 REST 与 GraphQL 之间往返转换后能正确读写。
风 风格技术团队 回答于 2 天前
21

订单相关的还有 Order 与 DraftOrder 之分,gid 类型拼错时返回的是 null 而不是报错,很难发现。

泽 阿泽 · 前端工程师 · 昨天

你的处理方式是什么?

写下你实际验证过的步骤,比「我也有这个问题」有用得多。当前版本为静态展示,提交后会由团队整理并回复。

描述你遇到的现象、店铺环境(主题 / 套餐 / 应用)、已经试过哪些操作……
我要单独提问 工作日 10 分钟内回复,可直接加微信 fenggejishu