Afin de limiter le volume de données et d'assurer la rapidité des requêtes, la plupart des requêtes sur les listes sont paginées.
Le concept repose sur les Connections et Edges, ce qui est en quelque sorte la norme en matière de pagination dans GraphQL. La pagination utilise un modèle basé sur un curseur avec les arguments suivants :
first: Nombre d'éléments à renvoyer (maximum: 50)after: Curseur sur le dernier élément de la page précédente (à omettre pour la première page)Les requêtes paginées renvoient les résultats suivants :
nodes: les éléments proprement ditspageInfo.endCursor: Curseur sur le dernier élément de la page actuellepageInfo.hasNextPage: indique s'il y a une autre pagetotalCount: Nombre total d'éléments (si la requête le prend en charge)Il n'est pas nécessaire de définir d'argument after pour la première page. La requête suivante renvoie les 50 premières entrées ainsi qu'un objet pageInfo contenant l'endCursor de la page.
{
allEntries(first: 50) {
totalCount
pageInfo {
hasNextPage
endCursor
}
edges {
node {
id
name
}
}
}
}
Pour récupérer les 50 entrées suivantes, utilise l'endCursor de la réponse précédente et définis-le comme suit pour l'argument after de la requête suivante :
{
allEntries(first: 50, after: "NTA") {
totalCount
pageInfo {
hasNextPage
endCursor
}
edges {
node {
id
name
}
}
}
}