Shopify应用开发inventory_items.json接口调用异常问题求助
问题解决思路
一、全量拉取商品数据(解决products.json仅返回50条的问题)
- Shopify 商品接口默认返回50条数据,可先通过
limit参数调整单页最大返回量到250,请求示例:https://{{api_key}}:{{password}}@{{shopify_domain}}/admin/products.json?limit=250 - 该接口采用游标分页逻辑,每次请求的响应头
Link字段会携带下一页的请求地址,你可以在Symfony中循环发起请求,直到响应头没有下一页标识为止,将所有页的商品数据合并即可拿到全量18万条商品信息。
二、解决inventory_items.json参数报错问题
- 首先明确:
inventory_items.json接口要求传入的ids参数是库存项ID(inventory_item_id),不是商品ID(product_id),传入商品ID必然会触发参数无效报错。 - 你可以从第一步拉取的商品数据中提取所有商品变体(variants)携带的
inventory_item_id字段,将其收集后作为参数传入该接口。 - 该接口支持批量查询,单次最多可传入100个逗号分隔的inventory_item_id,请求示例:
https://{{apiKey}}:{{password}}@{{shopifyDomain}}/admin/api/{{apiVersion}}/inventory_items.json?ids=id1,id2,id3 - 你用Twig拼接接口地址时,需要注意:逗号分隔的ID列表不要带多余空格,所有参数要做URL编码处理,避免特殊字符导致请求异常。
三、完整实现流程建议
- 先分页拉取全量商品数据,同步收集所有inventory_item_id,同时落库商品基础信息
- 将收集到的inventory_item_id按每100个分为一组,循环批量请求inventory_items接口获取库存数据
- 请求时注意控制频率,Shopify REST API默认限流为每秒2次,批量请求之间可增加500ms左右的延迟,避免触发限流导致请求失败。
内容的提问来源于stack exchange,提问作者Karim HADJ-ABDELKADER
相关产品推荐
相关产品推荐

