Paginierung
Listen-Endpunkte mit opaken Cursorn durchblättern — nie mit Offsets.
Immer cursorbasiert
Jeder Listen-Endpunkt paginiert mit einem opaken Cursor, nie mit einem numerischen Offset. Cursor sind stabil unter gleichzeitigen Schreibvorgängen, sodass Sie beim Blättern nie Zeilen überspringen oder wiederholen — der Kompromiss, den Seitenzahl-Paginierung nicht eingehen kann.
Übergeben Sie ein optionales limit (Seitengröße) und für jede Seite nach der ersten den cursor, den die vorherige Antwort zurückgegeben hat:
curl "https://api.example.com/api/v1/products?limit=50" \
-H "X-API-Key: pie_live_..."
Die Antwort lesen
Listenantworten kapseln die Zeilen in items und legen ein nextCursor offen. Ist nextCursor gleich null, haben Sie die letzte Seite erreicht:
{
"items": [ /* … bis zu `limit` Datensätze … */ ],
"nextCursor": "eyJpZCI6IjAx..."
}
Durch alle Datensätze blättern
Folgen Sie dem Cursor, bis er null zurückgibt:
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);
Behandeln Sie den Cursor als opak — dekodieren, konstruieren oder speichern Sie ihn nicht über die nächste Anfrage hinaus. Seine Kodierung ist ein internes Detail und kann sich ohne Vorankündigung ändern.