recherche

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

La pagination de l'API Google Drive PHP ne fonctionne pas lors de l'utilisation de différentes requêtes

J'utilise l'API Google Drive PHP dans le projet Laravel (v9.0). Concernant la pagination, j'espère avoir le processus suivant :

  1. Récupérez la première page du fichier et remettez-la au début
  2. Lorsque l'utilisateur fait défiler vers le bas de la page, le front-end demande la page de fichiers suivante ;
  3. Le backend reçoit la requête et obtient la page correspondante de l'API Google Drive.
Le problème auquel je suis confronté est que lorsque le frontend demande la page suivante (dans l'exemple ci-dessous,

Voici le code que j'utilise : pageToken 具有之前 Google Drive 调用中的 nextPageToken 值) ,Google 将引发错误:代码:400,消息:无效值,位置:pageToken).

$pageToken = request()->input('pageToken');

$optParams = [
    'q' => '' . $parentQuery,
    'pageSize' => $paginateSize,
    'fields' => 'nextPageToken, files(id, name, parents)',
];

if ($pageToken) {
    $optParams['pageToken'] = $pageToken;
}

$response = $this->service->files->listFiles($optParams);

Cependant, si je récupère toutes les pages avant de revenir au backend, cela semble fonctionner :

$optParams = [
    'q' => '' . $parentQuery,
    'pageSize' => $paginateSize,
    'fields' => 'nextPageToken, files(id, name, parents)',
];

$files = [];

do {
    $results = $this->service->files->listFiles($optParams);

    $files = array_merge($files, $results->getFiles());

    $pageToken = $results->getNextPageToken();

    if ($pageToken) {
        $optParams['pageToken'] = $pageToken;
    }

} while ($pageToken);

Je ne comprends peut-être pas comment la pagination est utilisée dans l'API Google Drive, mais existe-t-il un moyen de paginer le contenu comme dans mon premier exemple ?

P粉993712159P粉993712159489 Il y a quelques jours558

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

  • P粉546138344

    P粉5461383442023-09-07 11:36:00

    Utilisez les fonctions isset et empty pour vérifier si la valeur pageToken est valide

    $pageToken = request()->input('pageToken');
    
    $optParams = [
        'q' => '' . $parentQuery,
        'pageSize' => $paginateSize,
        'fields' => 'nextPageToken, files(id, name, parents)',
    ];
    
    if (isset($pageToken) && !empty($pageToken)) {
        $optParams['pageToken'] = $pageToken;
    }
    
    $response = $this->service->files->listFiles($optParams);

    répondre
    0
  • Annulerrépondre