6

我正在使用shopify_api宝石。

API 文档显示您可以ShopifyAPI::Order通过告诉它返回哪些字段来缩小响应。例如,以下将仅返回id属性,而shipping_address属性

ShopifyAPI::Order.find(:all, params: {fields: "id,shipping_address"})

shipping_address恰好是其中包含多个字段的哈希。是否可以指定要返回的嵌套字段?shipping_address例如

ShopifyAPI::Order.find(:all, params: {fields: "id,shipping_address['country_code']"})

这可能会返回类似

  #<ShopifyAPI::Order:0x0000010558b348 
    @attributes={
      "id"=>12345678, 
      "shipping_address"=>#<ShopifyAPI::ShippingAddress:0x0000010558aa88 
        @attributes={"country_code"=>"US"}, 
        @prefix_options={}, 
        @persisted=false>
      }, 
    @prefix_options={}, 
    @persisted=true>

我知道我可以自己挑选出这些属性(order.shipping_address.country_code),但这更符合“精简”响应的利益。

额外问题 1:fields使用参数的可感知优势是什么?

额外问题 2: Shopify 什么时候(如果有的话)可能会返回零送货地址?

4

1 回答 1

3

通常最好为每个问题单独发布,但这里有答案。

  1. 不。
  2. 如果您限制返回的数据,则生成响应所需的时间会更少,通过网络传输的数据也会更少,解析的数据也会更少。这意味着您应该更快地进行操作。这取决于许多不同的因素,很难说您将获得多少性能提升。我的感觉是,除非您执行大量请求,否则它是微乎其微的。
  3. 如果订单(即所有订单项)不需要送货,送货地址可能为空。
于 2012-07-08T11:58:16.327 回答