Php 分页api请求,如何知道是否还有其他页面?

Php 分页api请求,如何知道是否还有其他页面?,php,api,pagination,Php,Api,Pagination,我正在创建一个使用第三方API的PHP类。API有一个具有此请求URL结构的方法: https://api.domain.com/path/sales?page=x 其中“x”是页码 每个页面返回50个销售,我需要为每个用户返回未定义数量的页面(取决于用户销售),并存储每个销售的一些数据 我已经创建了一些方法,可以从URL获取数据,解码并使用所需的数据创建一个新的数组,但只使用第一个页面请求 现在我想创建一个方法来检查是否还有另一个页面,如果有,获取它并再次进行检查 如何检查是否还有其他页面?

我正在创建一个使用第三方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\u-get\u-content
。当我请求超出范围的页面时,我得到以下结果:

string(2) "[]"
另一个在
json\u解码之后:

array(0) { }

从您显示的响应中,如果没有结果,您将得到一个空数组。在这种情况下,您可以在循环中使用
empty
方法来确定是否有任何内容要报告:

// Craft the initial request URL
$page = 1;
$url = 'https://api.domain.com/path/sales?page=' . $page;

// Now start looping
while (!empty(file_get_contents($url)) {
    // There's data here, do something with it

    // And set the new URL for the next page
    $url = 'https://api.domain.com/path/sales?page=' . ++$page;
}

这样,它将继续在所有页面上循环,直到没有更多的数据。

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

$url = $my_class->get_data($sales_url);
如果以上只是原始响应(因此,如果页面超出字符串“[]”的范围,它将永远不会变为空(“[]”)。因此,我猜测get_data的返回值是这个字符串,而它应该是实际的数组/json,即使结果是空的(即我怀疑一旦收集了数据(例如,在循环外部),您就会执行json_解码)


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

根据我使用多个API的经验,响应返回找到的行数,以及从第1页开始的每页x个数。 在您的例子中,如果响应有行数,那么只需将其除以x number页,并将结果作为页码循环

$results = 1000;
$perPage = 50;
$pages = ceil($results/$perPage);
for (i=1; $i <= $pages; $i++){
     // execute your api call and store the results
}
$results=1000;
每页$50;
$pages=ceil($results/$perPage);

对于(i=1;$i检查http响应标题以获取集合中的项目总数

当您输入超出范围的页面时,api返回什么?假设您使用CURL,当您尝试访问不存在的页码时,请求是否返回200以外的值?谢谢!我编辑了问题以回答您的问题。谢谢!这就是问题所在lem,我刚刚在响应中添加了json_decode,它很有效。我想你是说($I=1;$I<$pages;$I++){
no?