PHP API cURL,带有获取所有分页数据并将其写入文件的循环

u5i3ibmn  于 2022-11-13  发布在  PHP
关注(0)|答案(1)|浏览(155)

作为一个API请求和适当编码的新手,我希望我能得到适当循环代码的帮助,用于将光标移动到下一页,并返回所有数据,直到没有更多的页。我的初始代码用于获得50个结果的第一页,没有循环语句。我只需要帮助编写适当的循环。
下面是初始代码。它可以很好地得到第一页的结果。我转储到屏幕只是作为一个测试,看看什么是出来。我没有任何错误处理的代码。

我需要在代码中添加一个循环,用于收集所有数据,直到hasMore为false,并将其写入/追加到我的文件中。

API文档指出我可以通过这个来移动光标并获得下一页。这个端点是通过光标分页的。pageInfo属性将包含是否有更多结果的信息:{“光标”:“镁”、“有更多”:true }。如果hasMore为true,则可以通过将游标作为查询字符串的一部分传递到下一个API请求(例如?cursor=Mg)来检索下一页结果。

<?php

$url = "myURL/incoming/v2/content";

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$headers = array(
   "Accept: application/json",
   "Authorization: Bearer key",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
//for debug only!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);
file_put_contents('CURL-CONTENT.txt', $resp);

?>
af7jpaap

af7jpaap1#

你遗漏了一些细节,我可以给予你一些概括性的帮助。
这可能足以让你走上正轨。

file_put_contents('CURL-CONTENT.txt',''); // create file and if it exists, clear its contents
$url = "myURL/incoming/v2/content/";
while(true){
  $curl = curl_init($url);
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  
  $headers = array(
     "Accept: application/json",
     "Authorization: Bearer key",
  );
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  //for debug only!
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  
  $resp = curl_exec($curl);
  curl_close($curl);
  var_dump($resp);
  file_put_contents('CURL-CONTENT.txt', $resp,FILE_APPEND); // Appends to the file
 //  get the value of hasMore. 
  if(!hasMore){break;}
 // at this point there must be more, so prepare the next URL
  $url = "myURL/incoming/v2/content/?Cursor=Mg";
}

相关问题