gpt4 book ai didi

php - 分页的api请求,如何知道是否有另一个页面?

转载 作者:可可西里 更新时间:2023-11-01 12:38:07 26 4
gpt4 key购买 nike

我正在创建一个使用第 3 方 API 的 PHP 类。 API 有一个具有此请求 URL 结构的方法:

https://api.domain.com/path/sales?page=x

其中“x”是页码。

每个页面返回 50 个销售额,我需要为每个用户返回未定义数量的页面(取决于用户销售额)并存储每次销售的一些数据。

我已经创建了一些方法来从 URL 获取数据,解码并创建一个包含所需数据的新数组,但仅限于第一页请求。

现在我想创建一个方法来检查是否有另一个页面,如果有,获取它并再次检查

如何检查是否有其他页面?如果有一个页面,如何创建一个循环来获取另一个页面?

我已经有了这段代码,但它会创建一个无限循环。

require('classes/class.example_api.php');
$my_class = new Example_API;
$page = 1;
$sales_url = $my_class->sales_url( $page );
$url = $my_class->get_data($sales_url);

while ( !empty($url) ) {
$page++;
$sales_url = $my_class->sales_url( $page );
$url = $my_class->get_data($sales_url);
}

我不使用 CURL,我使用 file_get_content。当我请求超出范围的页面时,我得到以下结果:

string(2) "[]"

还有 json_decode 之后的另一个:

array(0) { }

最佳答案

根据您的输入,在 while 循环中,您更改 $url(它实际上保存 API 调用返回的数据),如果我是正确的,它会检查是否为空。

$url = $my_class->get_data($sales_url);

如果上面只是原始响应(所以在页面超出范围的情况下字符串“[]”),它永远不会为空(“[]”)为真。所以我的猜测是 get_data 的返回值是这个字符串,而它应该是实际的数组/json,即使结果为空(即我怀疑你在收集数据后执行 json_decode,例如在循环之外)。

如果是这种情况,我的建议是在循环中检查“[]”(例如 while ($url !== "[]"))或在循环中解码响应数据($url = json_decode($url)).

关于php - 分页的api请求,如何知道是否有另一个页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31920810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com