我注意到在Shopify API文档中,他们提到了使用"以逗号分隔的订单ID列表" 作为参数在一次通话中检索多个订单的可能性叫" ids"。
链接到我引用的文档部分:https://docs.shopify.com/api/order#index
我多年来一直在使用shopify_api gem,它基于Rails ActiveResource。我目前在Rails 3.2.13中使用它,效果很好。
我知道如何检索单个记录:
# params[:id] = "123456789"
order = ShopifyAPI::Order.find(params[:id])
一次或许多记录:
orders = ShopifyAPI::Order.find(:all, :params => {:limit => 250, :page => 2})
但是,我似乎无法使用多个ID工作。我在这里做错了什么想法?
# params[:ids] = "123456789,987654321,675849301"
orders = ShopifyAPI::Order.find(:all, :params => {:ids => params[:ids]})
此GET请求发出了什么:https://xxxxxx.myshopify.com:443/admin/orders.json?ids=123456789,987654321,675849301
但是没有回复,orders = []
更新
我还尝试了以下建议:
# params[:ids] = "123456789,987654321,675849301"
orders = ShopifyAPI::Order.find(params[:ids])
此GET请求发出了什么:https://xxxxxx.myshopify.com:443/admin/orders/123456789,987654321,675849301.json
但是这只返回第一个订单123456789
和
# params[:ids] = "123456789,987654321,675849301"
ids_as_array = params[:ordersSel].split(",")
orders = ShopifyAPI::Order.find(:all, :params => {ids: ids_as_array})
发出此GET请求:
https://xxxxxx.myshopify.com:443/admin/orders.json?ids[]=123456789&ids[]=987654321&ids[]=675849301
结果为Bad Request
答案 0 :(得分:2)
这对我有用,只是在控制台中测试了
myids = "2354899011,1234263747"
ShopifyAPI::Order.where(ids: myids)
这导致以下请求
https://myfancyshop.myshopify.com/admin/orders.json?ids=2354899011,1234263747
此ShopifyAPI::Order.find(:all, :params => { :ids => myids })
也为我提供了相同的结果。
答案 1 :(得分:2)
好的,所以我一直在尝试的其实是正确的。问题是我的测试存储中的订单是存档/关闭的,因此请求必须是这样的:
# params[:ids] = "123456789,987654321,675849301"
orders = ShopifyAPI::Order.find(:all, :params => {
:ids => params[:ids],
:status => 'any'
})
关键是在调用中包含:status => 'any'
,否则API只会返回状态为“打开”的订单。
注意:以上适用于Rails 3.2和Shopify API gem 3.2.6(因此无需使用最新版本)。
感谢确认这是可能的其他两个答案。