加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – paginated api请求,如何知道是否还有其他页面?

发布时间:2020-12-13 17:55:14 所属栏目:PHP教程 来源:网络整理
导读:我正在创建一个使用第三方API的 PHP类. API有一个具有此请求URL结构的方法: https://api.domain.com/path/sales?page=x 其中“x”是页码. 每个页面返回50个销售额,我需要为每个用户返回一个未定义的页面数(取决于用户销售额)并存储每个销售的一些数据. 我已
我正在创建一个使用第三方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)).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读