Per limitare la quantità di dati e garantire la rapidità delle richieste, la maggior parte delle interrogazioni sulle liste viene impaginata.
Il concetto si basa su Connections and Edges, che in GraphQL sono praticamente lo standard per l'impaginazione. L'impaginazione utilizza un modello basato su cursori con i seguenti argomenti:
first: Numero di elementi da restituire (massimo: 50)after: Cursore sull'ultimo elemento della pagina precedente (omettilo nella prima pagina)Le query con paginazione restituiscono quanto segue:
nodes: gli elementi veri e propripageInfo.endCursor: Cursore sull'ultimo elemento della pagina correntepageInfo.hasNextPage: indica se è presente un'altra paginatotalCount: Numero totale di elementi (se supportato dalla query)Per la prima pagina non è necessario specificare l'argomento after. La seguente richiesta restituisce i primi 50 record insieme a un oggetto pageInfo che contiene l'endCursor della pagina.
{
allEntries(first: 50) {
totalCount
pageInfo {
hasNextPage
endCursor
}
edges {
node {
id
name
}
}
}
}
Per richiedere i prossimi 50 record, utilizza l'endCursor della risposta precedente e impostalo come segue per l'argomento after della richiesta successiva:
{
allEntries(first: 50, after: "NTA") {
totalCount
pageInfo {
hasNextPage
endCursor
}
edges {
node {
id
name
}
}
}
}