Per limitare la quantità di dati e mantenere le richieste veloci, la maggior parte delle query di elenco è paginata.
Il concetto si basa su Connections ed Edges, che rappresentano lo standard di fatto per la paginazione in GraphQL. La paginazione utilizza un modello basato su cursore con i seguenti argomenti:
first: numero di elementi da restituire (massimo: 50)after: cursore dell'ultimo elemento della pagina precedente (da omettere per la prima pagina)Le query paginate restituiscono quanto segue:
nodes: gli elementi effettivipageInfo.endCursor: cursore dell'ultimo elemento della pagina correntepageInfo.hasNextPage: indica se è presente una pagina successivatotalCount: numero totale di elementi (se supportato dalla query)Per la prima pagina non è necessario impostare alcun argomento after. La seguente richiesta restituisce i primi 50 elementi insieme a una pageInfo contenente l'endCursor della pagina.
{
allEntries(first: 50) {
totalCount
pageInfo {
hasNextPage
endCursor
}
edges {
node {
id
name
}
}
}
}
Per richiedere i 50 elementi successivi, utilizza l'endCursor della risposta precedente e impostalo come argomento after per la richiesta successiva, come segue:
{
allEntries(first: 50, after: "NTA") {
totalCount
pageInfo {
hasNextPage
endCursor
}
edges {
node {
id
name
}
}
}
}