רוב שיטות הרשימה בספריית 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();