페이지 나누기 관리

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