Paginazione
Le collezioni che si paginano portano un cursore. Seguilo finché l'API non dice che non ce ne sono altri:
{
"data": [ ... ],
"meta": { "has_more": true, "next_cursor": "eyJpZCI6InByb3BfMWI3N2UwYTRmMiJ9" }
}L'unica condizione di arresto corretta
Fermati quando has_more è falso. Non quando una pagina torna più corta del
limite che hai chiesto, che è l'errore che quasi tutti fanno per primo: una pagina
piena può comunque essere l'ultima, e una pagina corta può comunque portare un cursore.
Perché un cursore e non un numero di pagina
I cursori sono stabili rispetto agli inserimenti. Paginare per scostamento su un catalogo su cui si sta scrivendo salterà delle schede e te ne mostrerà altre due volte, e lo farà in silenzio.
Lascia fare al client
Ogni client Skautik ha un iteratore che segue il cursore, quindi questa è una riga e non un ciclo:
for await (const property of skautik.properties.listAll({ city: "Berlin" })) {
console.log(property.title);
}for property in skautik.properties.list_all(city="Berlin"):
print(property.title)for property, err := range skautik.AllProperties(
client.Properties.ListProperties(ctx).City("Berlin"),
) {
if err != nil {
return err
}
fmt.Println(property.Title)
}Si fermano inoltre se il cursore smette di avanzare, così un guasto dalla nostra parte non può diventare dalla tua un ciclo che non finisce mai.