Rumah  >  Soal Jawab  >  teks badan

Penomboran API PHP Google Drive tidak berfungsi apabila menggunakan permintaan yang berbeza

Saya menggunakan API PHP Google Drive dalam projek Laravel (v9.0). Berkenaan paging, saya harap ada proses berikut:

  1. Dapatkan halaman pertama fail dan kembalikan ke bahagian hadapan
  2. Apabila pengguna menatal ke bahagian bawah halaman, bahagian hadapan meminta halaman seterusnya bagi fail
  3. Bahagian belakang menerima permintaan dan mendapat halaman yang sepadan daripada API Google Drive.

Masalah yang saya hadapi ialah apabila bahagian hadapan meminta halaman seterusnya (dalam contoh di bawah, pageToken 具有之前 Google Drive 调用中的 nextPageToken 值) ,Google 将引发错误:代码:400,消息:无效值,位置:pageToken Di bawah ialah kod yang saya gunakan:

).
$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);

Walau bagaimanapun, jika saya mendapat semua halaman sebelum kembali ke bahagian belakang, ia nampaknya berkesan:

$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);

Saya mungkin salah faham cara penomboran digunakan dalam API Google Drive, tetapi adakah terdapat cara untuk menomborkan kandungan seperti dalam contoh pertama saya?

P粉993712159P粉993712159432 hari yang lalu528

membalas semua(1)saya akan balas

  • P粉546138344

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

    Gunakan fungsi isset dan kosong untuk menyemak sama ada nilai pageToken adalah sah

    $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);

    balas
    0
  • Batalbalas