Shopify API:在一次调用中通过id检索多条记录

时间:2015-09-14 07:34:22

标签: ruby-on-rails ruby ruby-on-rails-3.2 shopify activeresource

我注意到在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

2 个答案:

答案 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(因此无需使用最新版本)。

感谢确认这是可能的其他两个答案。