Um die Menge der Nutzdaten zu begrenzen und die Anfragen schnell zu halten, werden die meisten Listenabfragen paginiert.
Das Konzept basiert auf Connections und Edges, was in GraphQL quasi als Standard für die Paginierung gilt. Die Paginierung nutzt ein Cursor-basiertes Modell mit folgenden Argumenten:
first: Anzahl der zurückzugebenden Elemente (maximal: 50)after: Cursor des letzten Elements der vorherigen Seite (bei der ersten Seite weglassen)Paginierte Abfragen liefern Folgendes zurück:
nodes: die eigentlichen ElementepageInfo.endCursor: Cursor für das letzte Element der aktuellen SeitepageInfo.hasNextPage: gibt an, ob eine weitere Seite vorhanden isttotalCount: Gesamtzahl der Elemente (sofern von der Abfrage unterstützt)Für die erste Seite muss kein after-Argument festgelegt werden. Die folgende Anfrage gibt die ersten 50 Einträge zusammen mit einer pageInfo zurück, die den endCursor der Seite enthält.
{
allEntries(first: 50) {
totalCount
pageInfo {
hasNextPage
endCursor
}
edges {
node {
id
name
}
}
}
}
Um die nächsten 50 Einträge anzufordern, verwende den endCursor der vorherigen Antwort und setze ihn wie folgt für das After-Argument der nächsten Anforderung:
{
allEntries(first: 50, after: "NTA") {
totalCount
pageInfo {
hasNextPage
endCursor
}
edges {
node {
id
name
}
}
}
}