管理分頁

Google Cloud Java 程式庫中的大多數清單方法都會傳回 PagedResponse 物件。這樣一來,您就能疊代結果,不必手動管理網頁符記。

處理分頁最簡單的方法是使用 iterateAll() 方法。當您逐一查看集合時,程式庫會在背景自動擷取新網頁。

import com.google.cloud.secretmanager.v1.ListSecretsRequest;
import com.google.cloud.secretmanager.v1.ProjectName;
import com.google.cloud.secretmanager.v1.Secret;
import com.google.cloud.secretmanager.v1.SecretManagerServiceClient;

try (SecretManagerServiceClient secretManager = SecretManagerServiceClient.create()) {
    // Prepare the request
    ListSecretsRequest request = ListSecretsRequest.newBuilder()
        .setParent(ProjectName.of("my-project").toString())
        .build();

    // Call the API
    // This returns a PagedResponse
    SecretManagerServiceClient.ListSecretsPagedResponse response = secretManager.listSecrets(request);

    // Automatically fetches subsequent pages of secrets
    for (Secret secret : response.iterateAll()) {
        System.out.printf("Secret: %s%n", secret.getName());
    }
}

手動分頁 (存取權杖)

如需手動控制分頁 (例如,適用於將權杖傳送至前端的 Web API),您可以從回應存取 nextPageToken

// Prepare request with page size and optional token
ListSecretsRequest.Builder requestBuilder = ListSecretsRequest.newBuilder()
    .setParent(ProjectName.of("my-project").toString())
    .setPageSize(10);

// Check if we have a token from a previous request (e.g., from a query parameter)
String pageToken = request.getParameter("page_token");
if (pageToken != null) {
    requestBuilder.setPageToken(pageToken);
}

SecretManagerServiceClient.ListSecretsPagedResponse response = secretManager.listSecrets(requestBuilder.build());

// Process current page items
for (Secret secret : response.getPage().getValues()) {
    // Process current page items
}

// Get the token for the next page (empty string if no more pages)
String nextToken = response.getNextPageToken();