Ich verwende die Google Drive PHP API im Laravel (v9.0)-Projekt. Was das Paging betrifft, hoffe ich auf den folgenden Prozess:
Das Problem, mit dem ich konfrontiert bin, besteht darin, dass das Frontend die nächste Seite anfordert (im Beispiel unten pageToken
具有之前 Google Drive 调用中的 nextPageToken
值) ,Google 将引发错误:代码:400,消息:无效值,位置:pageToken
Unten ist der Code, den ich verwende:
$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);
Wenn ich jedoch alle Seiten erhalte, bevor ich zum Backend zurückkehre, scheint es zu funktionieren:
$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);
Ich verstehe möglicherweise falsch, wie die Paginierung in der Google Drive-API verwendet wird, aber gibt es eine Möglichkeit, Inhalte wie in meinem ersten Beispiel zu paginieren?
使用 isset 和 empty 函数检查 pageToken 值是否有效