这很奇怪..我正在使用真品宝石从亚马逊产品广告API中请求数据..并使用数组来传递它所需的ID ..并且出于某种原因,在我发送它之间,以及何时API获取它有一个插入ID的反斜杠?并且它一直在做它..
lookup_items = ['B00HJ50X4W']
puts lookup_items
response = x.item_lookup(
query: {'ItemId' => lookup_items ,
'ResponseGroup' => 'EditorialReview'
},
persistent: true
)
y = response.to_h
puts y
我运行上面的代码,这是响应:
B00HJ50X4W
{"Name"=>"ItemId", "Value"=>"[\"B00HJ50X4W\"]"}, {"Name"=>"Operation", "Value"=>"ItemLookup"}, {"Name"=>"ResponseGroup", "Value"=>"EditorialReview"}, {"Name"=>"Service", "Value"=>"AWSECommerceService"}, {"Name"=>"SignatureMethod", "Value"=>"HmacSHA256"}, {"Name"=>"SignatureVersion", "Value"=>"2"}, {"Name"=>"Timestamp", "Value"=>"2015-05-11T19:51:30Z"}, {"Name"=>"Version", "Value"=>"2013-08-01"}, {"Name"=>"Signature", "Value"=>"F6+Ju5im8CrJW5vjoZpRRqOUK9HO/wIR0NCF2E7lMfM="}]}, "RequestProcessingTime"=>"0.0053020000000000"}, "Items"=>{"Request"=>{"IsValid"=>"True", "ItemLookupRequest"=>{"IdType"=>"ASIN", "ItemId"=>"[\"B00HJ50X4W\"]", "ResponseGroup"=>"EditorialReview", "VariationPage"=>"All"}, "Errors"=>{"Error"=>{"Code"=>"AWS.InvalidParameterValue", "Message"=>"[\"B00HJ50X4W\"] is not a valid value for ItemId. Please change this value and retry your request."}}}}}}
有什么方法可以强迫它只发送给我吗?有点不知所措..
答案 0 :(得分:3)
从Amazon Product Advertising API docs和Vacuum gem docs,ItemId
字段只是一个字符串,所以基本上当你在['B00HJ50X4W']
传递时真空宝石只是在它上面调用.to_s
,它会以你在回复中看到的格式将其变成一个字符串:
[30] pry(main)> ['B00HJ50X4W'].to_s
=> "[\"B00HJ50X4W\"]"
修复您的参数,然后解决问题。
我刚注意到你的评论,所以你显然知道如何一直做这项工作,所以现在我猜你真的想知道如何申请多项的项目信息?
您应该修改问题以明确这一点,然后该问题的答案为(as the API says):"对于多个ID,请使用逗号 - 最多十个ID的分隔列表。" 所以:
lookup_items = ['B00HJ50X4W', 'OTHER_ID', 'YET_ANOTHER_ID']
response = x.item_lookup(
query: {'ItemId' => lookup_items.join(","),
'ResponseGroup' => 'EditorialReview'
},
persistent: true
)
IE中。实际上你创建一个字符串,ID之间有逗号。
答案 1 :(得分:0)
没有反斜杠。 \"
是您在双引号字符串中编写"
的方式。 IOW,"\""
与'"'
相同。