首頁  >  問答  >  主體

使用不同請求時 Google Drive PHP API 分頁不起作用

我在 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粉993712159P粉993712159432 天前526

全部回覆(1)我來回復

  • P粉546138344

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

    使用 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);

    回覆
    0
  • 取消回覆