使用shopify-api-ruby调用Shopify REST API调整InventoryLevel失败求助
问题分析与解决办法
以下是调用adjust方法返回"Not Found"错误的常见原因及对应解决措施:
1. 改用InventoryLevel类方法调用adjust
通过实例调用adjust时,gem可能基于实例ID构造错误的API请求路径。建议直接使用类方法发起请求:
# 替换原实例调用代码为类方法调用 ShopifyAPI::InventoryLevel.adjust( inventory_item_id: inventory_item.id, location_id: LOCATION_ID.to_i, available_adjustment: 10 )
2. 强制转换ID参数为整数类型
Shopify API对ID参数类型敏感,字符串类型的ID可能导致请求匹配失败。确保location_id和inventory_item_id为整数:
LOCATION_ID = 61167763535 # 直接使用整数而非字符串 VARIANT_ID = 41932294357071 # 查询InventoryLevel时参数允许字符串,但adjust方法需传入整数 inventory_level = ShopifyAPI::InventoryLevel.all( inventory_item_ids: inventory_item.id.to_s, location_ids: LOCATION_ID.to_s ).first
3. 验证InventoryLevel实例有效性
打印实例核心属性,确认其与目标位置、库存项的关联关系正确:
puts "InventoryLevel ID: #{inventory_level.id}" puts "关联位置ID: #{inventory_level.location_id}" puts "关联库存项ID: #{inventory_level.inventory_item_id}"
如果输出ID与传入参数不匹配,说明all方法返回的实例并非目标位置的库存记录,需检查查询条件。
4. 确认API权限与版本
- 确保Shopify应用已申请
write_inventory权限; - 检查使用的API版本是否支持
InventoryLevel.adjust方法(要求2021-01及以后版本),可初始化gem时指定版本:
ShopifyAPI::Base.api_version = '2024-07' # 使用最新稳定版
内容的提问来源于stack exchange,提问作者Kavachaj
相关产品推荐
相关产品推荐

