php - 循环遍历 API 结果以进行分页
问题描述
我正在尝试通过 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 个结果,它将提供数据并给出标题响应,206 Partial Content
让我知道还有更多结果。要获得下一页,我必须发送Page: n
标题。
正如您从上面的代码中看到的那样,我正在发送Page: 1
标头。
我如何检查是否206
给出了响应代码,如果是,则继续循环直到它到达200
响应代码(每个循环都需要增加标题中的页码)?
解决方案
您可以将该代码放入函数中,然后根据您获得的响应代码以“n”作为参数调用该函数。你试过吗?您可以使用 curl_getinfo 选项 CURLINFO_RESPONSE_CODE 或 CURLINFO_HTTP_CODE 获取响应代码。
推荐阅读
- elasticsearch - match query returns exact values only in elasticsearch
- node.js - Issue with passing data from react front end and node express backend(corse and endpoints)
- javascript - Ajax Respond Internal Server Error 500 After Save in database Codeigniter
- opencv - 为什么 homography 矩阵不适用于图像中的任何点?
- php - 如何上传文件扩展名(*.xls 或 *.xlsx)?
- android - 如何在改造中执行删除 api
- reactjs - 使用 IntelliJ 构建反应 kotlin 应用程序时出错
- html - Laravel:如何使用路由和控制器在单击 href 链接时插入数据
- javascript - 防止动态添加的文本框在页面刷新时消失
- jwt - 如何在登录时在 JWT 令牌中从 Azure Active Directory 传递自定义扩展属性?