对结果进行分页

本页面介绍了不同的 Cloud Storage 工具和库如何对结果进行分页。列出大量对象存储桶时需要进行分页。

控制台

Google Cloud 控制台会在存储桶存储桶详情页面中自动对存储桶和对象列表进行分页。


打开“存储桶”页面

命令行

Google Cloud CLI 会自动对存储桶和对象列表进行分页。

客户端库

C++

默认情况下,客户端库会执行分页操作。当您调用支持分页的函数时,响应中会返回迭代器。如需查看此迭代器的使用方式示例,请参阅 ListObjects() 的 C++ 参考文档。

C#

默认情况下,客户端库会执行分页操作。当您调用支持分页的函数时,响应中会返回迭代器。如需查看此迭代器的使用方式示例,请参阅 ListObjects() 的 C# 参考文档。

Go

默认情况下,客户端库会执行分页操作。当您调用支持分页的函数时,响应中会返回迭代器。如需查看此迭代器的使用方式示例,请参阅 Bucket.Objects 的 Go 参考文档。

Java

默认情况下,客户端库会执行分页操作。当您调用支持分页的函数时,响应中会返回迭代器。如需查看此迭代器的使用方式示例,请参阅 Storage.Objects.list 的 Java 参考文档。

Node.js

默认情况下,客户端库会执行分页操作。当您调用支持分页的函数时,响应中会返回迭代器。如需查看此迭代器的使用方式示例,请参阅 getFiles() 的 Node.js 参考文档。

PHP

默认情况下,客户端库会执行分页操作。当您调用支持分页的函数时,响应中会返回迭代器。如需查看此迭代器的使用方式示例,请参阅 Objects 的 PHP 参考文档。

Python

默认情况下,客户端库会执行分页操作。当您调用支持分页的函数时,响应中会返回迭代器。如需查看此迭代器的使用方式示例,请参阅页面迭代器的 Python 参考文档。

Ruby

默认情况下,客户端库会执行分页操作。当您调用支持分页的函数时,响应中会返回迭代器。如需查看此迭代器的使用方式示例,请参阅 Google::Cloud::Storage::File::List 的 Ruby 参考文档。

REST API

JSON API

当您调用支持分页的函数时,如果列表不完整,则响应中会返回连续令牌 nextPageTokennextPageToken 表示返回的最后一个结果。将 nextPageToken 的值传递给后续请求的 pageToken 参数时,系统将从最后一个结果之后开始返回下一页结果。

示例响应

{
  "kind": "storage#objects",
  "nextPageToken": "CgtzaGliYS0yLmpwZw==",
  "items": [
    objects Resource
    …
  ]
}

如需详细了解 objects Resource,请参阅对象参考文档

示例请求

GET http://storage.googleapis.com/storage/v1/b/BUCKET_NAME&pageToken=NEXT_PAGE_TOKEN HTTP/1.1

Authorization: Bearer ACCESS_TOKEN
Accept: application/json

其中:

  • NEXT_PAGE_TOKEN 是上一个响应中的 nextPageToken 值。
  • BUCKET_NAME 是存储桶的名称。
  • ACCESS_TOKEN 是您从 OAuth 2.0 Playground 收到的访问令牌。

如需详细了解如何对结果进行分页,请参阅 Objects: listBuckets: list 的 JSON 参考文档。

XML API

当您调用支持分页的函数时,如果列表不完整,则响应中会返回连续令牌 NextContinuationTokenNextContinuationToken 表示返回的最后一个结果。将 NextContinuationToken 的值传递给后续请求的 continuation-token 参数时,系统将从最后一个结果之后开始返回下一页结果。

示例响应

HTTP/1.1 200 OK
X-goog-metageneration: 5
Content-location: http://example-bucket.storage.googleapis.com?max-keys=2&list-type=2
Expires: Wed, 02 Mar 2022 15:58:11 GMT
Content-length: 781
X-guploader-uploadid: ADPycdvFss2qs9wyMrrM2fIIZzTFFnZZM9i9k8TMbHipsxz8PqUjS5Xh_4tLsvb3_YYHTT0HmSYVv1Gtr816HQFnk28HMglyWA
Cache-control: private, max-age=0
Date: Wed, 02 Mar 2022 15:58:11 GMT
Content-type: application/xml; charset=UTF-8

<?xml version='1.0' encoding='UTF-8'?>
<ListBucketResult xmlns='http://doc.s3.amaz888onaws.com.fqhub.com/2006-03-01'>
  <Name>example_bucket</Name>
  <NextContinuationToken>CgtzaGliYS0yLmpwZw==</NextContinuationToken>
  <KeyCount>2</KeyCount>
  <MaxKeys>2</MaxKeys>
  <IsTruncated>true</IsTruncated>
  <Contents>
    ...
  </Contents>
  ...
</ListBucketResult>

请注意,list-type 必须设置为 2 才能返回 NextContinuationToken

示例请求

GET /?continuation-token=NEXT_CONTINUATION_TOKEN&prefix=t&marker=test&list-type=2 HTTP/1.1 \
  Host: BUCKET_NAME.storage.googleapis.com
  Date: Wed, 02 Mar 2022 16:00:00 GMT
  Content-Length: 0
  Authorization: AUTHENTICATION_STRING

其中:

  • NEXT_CONTINUATION_TOKEN 是您从上一个响应收到的 NextContinuationToken 值。
  • BUCKET_NAME 是存储桶的名称。
  • AUTHENTICATION_STRING 是您从 OAuth 2.0 Playground 收到的访问令牌。

如需详细了解如何对存储桶的结果进行分页,请参阅 List Objects 的 XML 参考文档。

后续步骤