Zum Inhalt springen

Paginierung

Wie Listen mit page und limit in Seiten aufgeteilt werden, der Block pagination in der Antwort, wie du alles durchläufst und wie Filter und Paginierung zusammenspielen.

Große Listen (Mitglieder, Kontoauszug, Feed, Produkte) kommen seitenweise. Du forderst die Seite mit zwei Parametern an und bekommst zusammen mit den Elementen den Block pagination.

Die Parameter

ParameterWas es istStandardMaximum
pageDie Seite, beginnend bei 11—
limitElemente pro Seite20100
curl -s "https://api.memberfy.net/api/profiles/list?page=2&limit=50" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID"

Die Antwort

{
  "success": true,
  "message": "…",
  "data": [ { "…": "…" } ],
  "pagination": { "page": 2, "limit": 50, "total": 137, "totalPages": 3 }
}
FeldWas es ist
pageDie zurückgegebene Seite
limitElemente pro Seite
totalWie viele Elemente es gibt, bereits gefiltert
totalPagesWie viele Seiten es gibt

Alles durchlaufen

let page = 1;
const all = [];
while (true) {
  const { data, pagination } = await api.profiles.getList({ page, limit: 100 });
  all.push(...data);
  if (page >= pagination.totalPages) break;
  page += 1;
}

Filter und Paginierung

Die Filter (search, role, type, status …) werden vor der Paginierung angewendet: total und totalPages zählen nur, was zum Filter passt.

Tipps

  • Nimm das größte sinnvolle limit (bis 100), um weniger Aufrufe zu machen.
  • Geh nicht davon aus, dass alle Listen paginiert sind: Ist eine es nicht, fehlt der Block pagination, und data enthält alles.
  • Wenn du eine Liste durchläufst, die sich beim Lesen ändert (zum Beispiel den Feed), kann ein Element auf zwei Seiten auftauchen; entferne Duplikate anhand der id.

Verwandte Artikel