Aus Gründen der Leistung und Skalierung ist die Anzahl der zurückgegebenen Einträge pro Anfrage begrenzt. Es gibt einen Paginierungsmechanismus, der es ermöglicht, über eine Cursor-Pased-Paginierung zum nächsten Stapel von Einträgen zu springen.
Das Konzept basiert auf Verbindungen und Kanten, die in GraphQL ein Quasi-Standard für die Paginierung sind. Bei Abfragen, die eine Paginierung ermöglichen, können die Argumente first
und after
sowie eine angeforderte pageInfo
festgelegt werden. Das erste Argument definiert, wie viele Elemente mit der Anfrage zurückgegeben werden sollen. Aus Leistungsgründen darf dieser Wert nicht höher als 50 sein. Die pageInfo
enthält einen endCursor
, der den Cursor
des letzten Elements auf der Seite definiert. Dieser endCursor
kann dann für das after
-Argument der nächsten Anfrage verwendet werden, um die nachfolgenden Elemente nach dem endCursor
zu erhalten. Die Parameter zur Steuerung der Seitennummerierung sind im Schema dokumentiert.
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, nehmen wir den endCursor
der vorherigen Antwort und setzen 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
}
}
}
}