La pagination de l'API Google Drive PHP ne fonctionne pas lors de l'utilisation de différentes requêtes
P粉993712159
P粉993712159 2023-09-06 15:00:23
0
1
524

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粉993712159
P粉993712159

répondre à tous(1)
P粉546138344

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);
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!