我在 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);