循环遍历 API 个分页结果

Looping through API results for pagination

我正在尝试通过 API 访问一些数据。这是我当前的代码:

$ch = curl_init("https://api.example.com/rest/1.3/analytics/affiliate/vendor/?account=xxxxx&select=EARNINGS_PER_HOP");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Page: 1', 'Accept: application/json', 'Authorization: XXXXX'));
$response = curl_exec($ch);
curl_close($ch);

if ($response) {
    $array = json_decode($response, TRUE);

    foreach ($array['rows']['row'] as $data) {
        $value = $data['data']['value']['$'];
        $dimension = $data['dimensionValue'];
        /// insert $value and $dimension into database
    }
}

我只是想从中获取一些数据并将其插入到 MySQL 数据库中。我当前的代码在技术上是可行的,但是 API 只显示前 100 个结果。

如果结果超过 100 个,它将提供数据并给出 header 响应 206 Partial Content 让我知道还有更多结果。要获取下一页,我必须在 header.

中发送 Page: n

从上面的代码可以看出,我在 header.

中发送 Page: 1

我如何检查是否给出了 206 响应代码,如果是,继续循环直到它到达 200 响应代码([=30 中的页码=] 每次循环都需要增加)?

您可以将该代码放入一个函数中,然后根据您获得的响应代码以 'n' 作为参数调用该函数。你试过了吗?您可以使用 curl_getinfo 选项 CURLINFO_RESPONSE_CODE 或 CURLINFO_HTTP_CODE.

获取响应代码