我在 Laravel (v9.0) 專案中使用 Google Drive PHP API。關於分頁,我希望有以下流程:
我面臨的問題是,當前端請求下一頁時(在下面的範例中,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);
但是,如果我在返回後端之前獲取所有頁面,它似乎可以工作:
$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);
我可能誤解了 Google Drive API 中分頁的使用方式,但是有沒有一種方法可以像我的第一個範例中那樣對內容進行分頁?
P粉5461383442023-09-07 11:36:00
使用 isset 和 empty 函數檢查 pageToken 值是否有效
$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);