Aller à la documentation
Java

Pagination

Une page, toutes les pages, ou un élément à la fois.

Une page

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

Une méthode list renvoie une Page avec items(), hasMore() et nextCursor(), et une boucle for parcourt ses éléments. Repassez nextCursor() comme cursor, avec les mêmes filtres, pour lire la page suivante.

Toutes les pages

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

Une méthode listAll suit le curseur jusqu'au bout et renvoie tous les éléments dans une seule List. Un échec sur n'importe quelle page fait échouer tout l'appel.

Un élément à la fois

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

Une méthode iterate renvoie un PagedIterable, qui ne demande la page suivante que lorsque la boucle y arrive : un break arrête donc les requêtes. stream() donne le même parcours sous forme de Stream, et toList() le rassemble.

Un itérateur s'arrête quand l'API répète un curseur qu'il a déjà suivi : un parcours ne peut donc jamais boucler sans fin.