Java 라이브러리의 대부분의 목록 메서드는 Google Cloud 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());
}
}
수동 페이지 나누기 (토큰 액세스)
페이지 나누기를 수동으로 제어해야 하는 경우 (예: 토큰을 프런트엔드로 전송하는 웹 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();