Maison  >  Questions et réponses  >  le corps du texte

Obtenez et écrivez toutes les données paginées dans un fichier via l'API PHP cURL en boucle

<p>En tant que débutant dans la création de requêtes API et le codage approprié, j'aimerais avoir de l'aide pour écrire le code approprié à boucler, déplacer le curseur vers la page suivante et renvoyer toutes les données jusqu'à ce qu'il n'y ait plus de pages. Mon code initial obtient la première page de 50 résultats sans boucle. J'ai juste besoin d'aide pour écrire une boucle appropriée. </p> <p>Le code initial est le suivant. Cela fonctionne bien pour obtenir la première page de résultats. J'affiche les résultats à l'écran juste pour tester pour voir quel est le résultat. Il n'y a aucune gestion des erreurs dans le code. </p> <p><strong>Je dois ajouter une boucle dans mon code jusqu'à ce que hasMore soit faux, puis écrire/ajouter les données à mon fichier. </strong></p> <p>La documentation de l'API indique que je peux déplacer le curseur et obtenir la page suivante de la manière suivante. Ce point de terminaison effectue la pagination via le curseur. L'attribut pageInfo contiendra des informations indiquant s'il y a plus de résultats : {"cursor": "Mg", "hasMore": true}. Si hasMore est vrai, le curseur peut être transmis à la requête API suivante dans le cadre de la chaîne de requête pour obtenir la page de résultats suivante, par exemple ?cursor=Mg. </p> <pre class="brush:php;toolbar:false;"><?php $url = "monURL/incoming/v2/content" ; $curl = curl_init($url); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $en-têtes = tableau( "Accepter : application/json", "Autorisation : Clé au porteur", ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); //pour le débogage uniquement ! 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); ?></pre></p>
P粉652523980P粉652523980386 Il y a quelques jours555

répondre à tous(1)je répondrai

  • P粉275883973

    P粉2758839732023-09-02 00:29:56

    Il vous manque certains détails. Je peux vous apporter une aide générale.
    Cela pourrait suffire à vous mettre sur la bonne voie.

    file_put_contents('CURL-CONTENT.txt',''); // 创建文件并清空其内容(如果文件存在)
    $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);
      // 仅用于调试!
      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); // 追加到文件中
     // 获取hasMore的值。
      if(!hasMore){break;}
     // 此时必须还有更多内容,因此准备下一个URL
      $url = "myURL/incoming/v2/content/?Cursor=Mg";
    }

    répondre
    0
  • Annulerrépondre