使用不同請求時 Google Drive PHP API 分頁不起作用
P粉993712159
P粉993712159 2023-09-06 15:00:23
0
1
541

我在 Laravel (v9.0) 專案中使用 Google Drive PHP API。關於分頁,我希望有以下流程:

  1. 取得檔案第一頁並回傳給前端;
  2. 當使用者捲動到頁面底部時,前端請求下一頁文件;
  3. 後端接收請求並從 Google Drive 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粉993712159
P粉993712159

全部回覆(1)
P粉546138344

使用 issetempty 函數檢查 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);
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板