문서로 건너뛰기
Java

페이지네이션

한 페이지, 모든 페이지, 또는 한 번에 한 항목씩.

한 페이지

OnePage.java
RequestOptions inbox = RequestOptions.of("folder", "inbox").limit(25);Page page = client.threads().list(inbox); for (Map<String, Object> thread : page) {    System.out.println(thread.get("id") + " " + thread.get("subject"));} if (page.hasMore()) {    Page next = client.threads().list(inbox.cursor(page.nextCursor()));     System.out.println(next.size());}

list 메서드는 items(), hasMore(), nextCursor()가 있는 Page를 반환하고, for 루프로 그 항목을 순회할 수 있습니다. 다음 페이지를 읽으려면 같은 필터와 함께 nextCursor()를 cursor로 다시 전달하세요.

모든 페이지

EveryPage.java
List<Map<String, Object>> contacts = client.contacts().listAll(); System.out.println(contacts.size());

listAll 메서드는 커서를 끝까지 따라가 모든 항목을 하나의 List로 반환합니다. 어느 페이지에서든 실패하면 호출 전체가 실패합니다.

한 번에 하나씩

Iterate.java
for (Map<String, Object> thread : client.threads().iterate(RequestOptions.of("query", "invoice"))) {    if (Boolean.TRUE.equals(thread.get("hasUnread"))) {        System.out.println(thread.get("id"));         break;    }} long starred = client.threads().iterate(RequestOptions.of("labelIds", "STARRED")).stream().count(); System.out.println(starred);

iterate 메서드는 PagedIterable을 반환합니다. 루프가 도달했을 때만 다음 페이지를 요청하므로 break로 요청이 멈춥니다. stream()은 같은 순회를 Stream으로 제공하고, toList()는 그것을 모읍니다.

API가 이미 따라간 커서를 반복하면 이터레이터가 멈추므로, 순회가 끝없이 도는 일은 없습니다.