Shopify GraphQL API(C#):产品ID查询及分页报错问题
Shopify GraphQL API分页与单产品查询错误解决
核心问题原因
Shopify GraphQL API的游标(cursor)和产品ID参数规则与REST API完全不同:
- 分页用的
after参数不能用产品纯数字ID,必须使用查询返回的cursor值 - 单产品查询的
id参数必须是Shopify的全局ID(gid格式),而非REST返回的纯数字ID
一、正确实现分页的步骤
1. 首次查询:获取游标与分页信息
第一次查询时,需同时返回edges.cursor和pageInfo(包含是否还有下一页、最后一个元素的游标):
products(first: 250) { edges { cursor # 可取出单个元素游标,或直接使用pageInfo.endCursor node { id title handle productCategory { productTaxonomyNode { fullName } } } } pageInfo { hasNextPage # 判断是否还有后续数据 endCursor # 最后一个元素的游标,直接用于下一页的after参数 } }
2. 后续分页查询:使用endCursor作为after参数
当pageInfo.hasNextPage为true时,将上一页返回的endCursor值填入after参数,继续查询下一页:
products(first: 250, after: "替换为上一页的endCursor值") { edges { cursor node { id title handle productCategory { productTaxonomyNode { fullName } } } } pageInfo { hasNextPage endCursor } }
二、单产品查询的正确写法
将REST API返回的纯数字ID,拼接为Shopify全局ID格式gid://shopify/Product/[数字ID]作为参数:
{ product(id: "gid://shopify/Product/7490375647481") { productCategory { productTaxonomyNode { fullName } } } }
也可使用该全局ID的Base64编码值作为参数,但直接使用gid格式更直观易读。
内容的提问来源于stack exchange,提问作者Shaggydog
相关产品推荐
相关产品推荐

