Afin de limiter le volume des données utiles et de garantir la rapidité des requêtes, la plupart des requêtes de liste sont paginées.
Le concept repose sur des Connections et Edges, ce qui constitue quasiment la norme pour la pagination dans GraphQL. La pagination utilise un modèle basé sur des curseurs avec les arguments suivants :
first : nombre d'éléments à retourner (maximum : 50)after : curseur du dernier élément de la page précédente (à omettre pour la première page)Les requêtes paginées renvoient les éléments suivants :
nodes : les éléments proprement ditspageInfo.endCursor : curseur du dernier élément de la page actuellepageInfo.hasNextPage : indique si une page supplémentaire est disponibletotalCount : nombre total d'éléments (si pris en charge par la requête)Pour la première page, aucun argument after ne doit être défini. La requête suivante renvoie les 50 premières entrées accompagnées d'une pageInfo contenant le endCursor de la page.
{
allEntries(first: 50) {
totalCount
pageInfo {
hasNextPage
endCursor
}
edges {
node {
id
name
}
}
}
}
Pour demander les 50 entrées suivantes, utilisez le endCursor de la réponse précédente et définissez-le comme argument « after » pour la requête suivante :
{
allEntries(first: 50, after: "NTA") {
totalCount
pageInfo {
hasNextPage
endCursor
}
edges {
node {
id
name
}
}
}
}