使用不同请求时 Google Drive PHP API 分页不起作用
P粉993712159
P粉993712159 2023-09-06 15:00:23
0
1
535

我在 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);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板