【发布时间】:2018-07-13 17:59:49
【问题描述】:
我在试图理解为什么我的代码不起作用时遇到了一些困难。它应该像这样工作:
- 我访问路线
/postman-test-route - 它使用一些标头和参数对
https://pro-sitemaps.com/api/进行 API 调用 - 每个 API 结果最多显示 20 个条目
- 当结果显示时,我迭代结果并计数条目,所以如果
entries == 20,然后进行另一个API调用,但将'from'参数从0更改为20,然后30然后@987654328 @ 然后50,直到条目少于20。
但看起来代码只运行一次。代码如下所示:
$app->map(['GET', 'POST'],'/postman-test-route', function (Request $request, Response $response) {
function getPROsitemapsEntries($total_from)
{
$client = new Client([
'sink' => 'C:\Users\****\Desktop\temp.txt'
]);
$r = $client->request('POST', 'https://pro-sitemaps.com/api/', [
'form_params' => [
'api_key' => 'ps_UmTvDUda.***************',
'method' => 'site_history',
'site_id' => 3845****,
'from' => $total_from, // Fra enties ID, kan kjøre en foreach for hver 20 entries. Hold en counter på result, hvis mindre enn 20 så fortsett, ellers die.
]
]);
return $r;
}
$function_call = getPROsitemapsEntries(0);
$responseData = json_decode($function_call->getBody(), true);
$i = 0;
$items = array(); // ALL entries should be saved here.
foreach($responseData['result']['entries'] as $entries){
$items[] = $entries;
$i++;
}
// Here it should call the API again with 'from' = 20, then 30, then 40
if($i > 20){
getPROsitemapsEntries($i);
}else{
die;
}
所以你可以看到这段代码:
if($i > 20){
getPROsitemapsEntries($i);
}else{
die;
}
我认为这会再次调用 API,并且应该在 foreach 中保存新条目(而不是覆盖)。有人可以看到我在哪里做错了吗?我很新
谢谢!
【问题讨论】: