API Paginering

De fleste spørringer som returnerer mer enn ett element (en array) bruker paginering, altså retur av delsett av dataene. Vi benytter standard GraphQL-støtte for paginering. Et endepunkt som støtter paginering har en returtype som slutter med Connection. Endepunkter som støtter paginering kan ta inn fire ekstra valgfrie argumenter: first, last, before og after. Argumentene first og last benyttes for å bestemme antall elementer som skal returneres, for eksempel saleInvoices(first: 5) vil returnere kun de første 5 fakturaene. Om du ikke oppgir noen first: så er det 100 elementer som vil bli returnert. Det er ikke mulig å spørre om mer enn 100 av gangen heller. Argumentene before og after er en offset som tar en peker (cursor) som input. Se eksemplene nedenfor for forklaring hvordan du finner og bruker denne.

I følgende spørring henter vi første 5 fakturaer, og vi spør om feltene nodes, edges og pageInfo.

POST `/api/v1/graphql`
query {
saleInvoices(first: 5) {
nodes {
id invoiceNumber # Felter som returneres for hver node
}
edges { # En liste av noder og en peker til noden
cursor # Peker til denne noden
node { id } # Node med felter som skal returneres
}
pageInfo { # Informasjon om det er flere sider med peker til start og slutt på gjeldende side
hasPreviousPage # Om det er flere resultater før denne siden
hasNextPage # Om det er flere resultater etter denne siden
startCursor # Peker til noden på starten av denne siden
endCursor # Peker til noden på slutten av denne siden
}
}
}

JSON Resultat
{
"data": {
"saleInvoices": {
"nodes": [
{
"id": "QWzh2B",
"invoiceNumber": 1005
},
{
"id": "GbmhNQ",
"invoiceNumber": 1004
}
],
"edges": [
{
"cursor": "MQ",
"node": {
"id": "QWzh2B"
}
},
{
"cursor": "Mg",
"node": {
"id": "GbmhNQ"
}
}
],
"pageInfo": {
"hasPreviousPage": false,
"hasNextPage": true,
"startCursor": "MQ",
"endCursor": "Mg"
}
}
}
}


Som vist i spørringen over får vi 5 resultater per side og om vi ønsker å laste neste side kan vi gjenta spørringen med en endring:
# Her bruker vi 'endCursor' fra forrige spørring og bruker argumentet 'after' for å hente resultater etter noden med peker 'Mg'
query {
saleInvoices(first: 5, after: "Mg") {
nodes {
id invoiceNumber
}
edges {
cursor
node { id }
}
pageInfo {
hasPreviousPage
hasNextPage
startCursor
endCursor
}
}
}

Les mer om GraphQL paginering
Var denne artikkelen nyttig?
Avbryt
Tusen takk!