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

Shopify API: Retrieve multiple records via id in a single call

我注意到在 Shopify API 文档中,他们提到了使用 "A comma-separated list of order ids" 作为参数在一次调用中 检索多个订单的可能性"ids".

Link 到我所指的文档部分: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

不过这只是returns第一个订单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

您可以将 ids 作为 find 的第一个参数传递:

orders = ShopifyAPI::Order.find(params[:ids])

或者如果您需要寻呼:

orders = ShopifyAPI::Order.find(params[:ids], :params => {:limit => 250, :page => 1})

这对我有用,刚刚在控制台中测试过

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 }) 也为我提供了相同的结果。

好的,所以我一直在尝试的实际上是正确的。问题原来是我在测试商店的订单是 Archived/Closed 所以请求需要是这样的:

# params[:ids] = "123456789,987654321,675849301"  
orders = ShopifyAPI::Order.find(:all, :params => {
    :ids => params[:ids],
    :status => 'any'
    })

关键是要在调用中包含 :status => 'any',否则只有 API 状态为 'Open'.

的 returns 订单

注意:以上适用于 Rails 3.2 和 Shopify API gem 3.2.6(因此无需使用最新版本)。

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