【发布时间】:2016-02-12 01:28:01
【问题描述】:
亚马逊的产品 API 限制我们每页只能获取 10 个商品,并且在某个查询中只能获取 10 个页面。
我开发了一个几乎可以获取所有项目的代码; 首先,我提供了一个看起来像这样的参数:
$item_params = [
"Service" => "AWSECommerceService",
"Operation" => "ItemSearch",
"AWSAccessKeyId" => env('AWS_ACCESS_KEY_ID'),
"AssociateTag" => env('AWS_ASSOCIATE_TAG_ID'),
"SearchIndex" => "HomeGarden",
"ResponseGroup" => "ItemAttributes,SalesRank,Offers",
"Sort" => "-price",
"BrowseNode" => $item_params['BrowseNode'],
"MaximumPrice" => $max_price,
"MinimumPrice" => "0"
];
然后,代码将获取该浏览节点(类别)下的所有商品,SORTED BY PRICE (desc) 还通过指定商品的MAX 和 MIN Price限制搜索。
伪代码(原代码太长)
function getProducts($item_params, $max_price = null){
$products = //request to amazon
foreach ($product as $key=>$value){
//add product to db
}
// if the total number of results on the query is not equal to zero, continue looping
if (!$products->totalResults() == 0){
$product = //get the first lowest priced item on the db
$this->getProducts($item_params, $product->price);
}
}
但是我遇到了这种情况:
请求输出示例(假设所有商品来自亚马逊):
ASIN(unique id) | Price
1 | 201
2 | 194
3 | 195
.
.
n | 33
n+1 | 33
n+2 | 33
.
n+120 | 33
n+121 | 34
n+122 | 35
其中从 n 到 n+120 的乘积相等。这将为我的getProducts 函数创建一个无限循环。我怎样才能避免这种情况?知道每个请求只返回 10 个项目,并且只返回 10 个页面。
【问题讨论】:
标签: php amazon-web-services amazon-product-api