Aller au contenu
P
Retour aux guides

Pagination

Parcourir les points de terminaison de liste avec des curseurs opaques — jamais des offsets.

Toujours par curseur

Chaque point de terminaison de liste pagine avec un curseur opaque, jamais un offset numérique. Les curseurs sont stables face aux écritures concurrentes, de sorte que vous ne sautez ni ne répétez jamais de lignes en paginant — le compromis que la pagination par numéro de page ne peut pas offrir.

Passez un limit optionnel (taille de page) et, pour chaque page après la première, le cursor renvoyé par la réponse précédente :

curl "https://api.example.com/api/v1/products?limit=50" \
  -H "X-API-Key: pie_live_..."

Lire la réponse

Les réponses de liste enveloppent les lignes dans items et exposent un nextCursor. Lorsque nextCursor vaut null, vous avez atteint la dernière page :

{
  "items": [ /* … jusqu'à `limit` enregistrements … */ ],
  "nextCursor": "eyJpZCI6IjAx..."
}

Parcourir tous les enregistrements

Suivez le curseur jusqu'à ce qu'il revienne null :

let cursor = null;
do {
  const url = new URL("https://api.example.com/api/v1/products");
  url.searchParams.set("limit", "100");
  if (cursor) url.searchParams.set("cursor", cursor);

  const res = await fetch(url, { headers: { "X-API-Key": key } });
  const page = await res.json();

  for (const product of page.items) handle(product);
  cursor = page.nextCursor;
} while (cursor);

Traitez le curseur comme opaque — ne le décodez pas, ne le construisez pas et ne le conservez pas au-delà de la requête suivante. Son encodage est un détail interne et peut changer sans préavis.