如何查看X-Shopify-Shop-Api-Call-Limit请求头?
如何获取Shopify API响应中的X_SHOPIFY_SHOP_API_CALL_LIMIT请求头?
我需要查看特定请求头X_SHOPIFY_SHOP_API_CALL_LIMIT,执行了以下代码:
CreateShopifyClientService.call(shop) begin response = ShopifyAPI::InventoryLevel.find(:all, params: { inventory_item_ids: product.inventory_item_id}) byebug rescue Exception => e byebug end
我试过各种方法,包括查看该gem的测试代码,都找不到这个请求头。以下是我尝试过但无效的操作:
(byebug) ap response.header *** NoMethodError Exception: undefined method "header' for #<ShopifyAPI::PaginatedCollection:0x000055b39213c9c8> (byebug) ap response.headers *** NoMethodError Exception: undefined method "headers' for #<ShopifyAPI::PaginatedCollection:0x000055b39213c9c8>
解决方法
因为ShopifyAPI::InventoryLevel.find(:all)返回的是PaginatedCollection分页集合对象,并非原始HTTP响应,所以直接调用header/headers会报错。可以通过以下方式获取目标请求头:
- 获取最近一次请求的原始响应
在请求执行后的byebug会话中,通过ShopifyAPI的全局连接对象获取最近一次请求的响应:
# 在byebug中执行 ap ShopifyAPI::Base.connection.last_response.headers['X_SHOPIFY_SHOP_API_CALL_LIMIT']
- 添加全局响应拦截器
如果需要持续监控该请求头,可以给ShopifyAPI的连接添加拦截器,每次请求完成后自动捕获响应头:
ShopifyAPI::Base.connection do |conn| conn.response do |resp| resp.on_complete do |env| call_limit = env.response_headers['X_SHOPIFY_SHOP_API_CALL_LIMIT'] # 可将call_limit存入日志或变量备用 puts "当前API调用限制: #{call_limit}" end end end
- 处理分页场景
如果接口返回分页数据,每一页的请求都会生成独立的响应,需要在每一页请求后重新获取last_response,或者通过拦截器统一处理所有分页请求的响应头。
内容的提问来源于stack exchange,提问作者ToddT
相关产品推荐
相关产品推荐

