Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met GraphQL-eindpunten in Data API Builder (DAB) kunt u gegevens nauwkeurig opvragen en wijzigen. Elke query declareert precies welke velden u nodig hebt en ondersteunt argumenten voor het filteren, ordenen en paglen van resultaten.
Standaard host DAB het GraphQL-eindpunt op:
https://{base_url}/graphql
Entiteiten die beschikbaar worden gemaakt via de configuratie, worden automatisch opgenomen in het GraphQL-schema.
Bijvoorbeeld, als u books en authors entiteiten hebt, verschijnen beide als hoofdvelden in het schema.
Opmerking
Gebruik een moderne GraphQL-client of IDE (zoals Apollo, Slapeloosheid of VS Code GraphQL) om het schema en de velden voor automatisch aanvullen te verkennen.
Trefwoorden die worden ondersteund in Data API Builder
| Concept | GraphQL | Purpose | 
|---|---|---|
| Projection | Items | Kiezen welke velden u wilt retourneren | 
| Filtering | filteren | Rijen beperken op conditie | 
| Sorteervolgorde | orderBy | De sorteervolgorde definiëren | 
| Paginaformaat | first | De items per pagina beperken | 
| Voortzetting | na | Doorgaan vanaf de laatste pagina | 
Basisstructuur
Elke GraphQL-query begint met een hoofdveld dat een entiteit vertegenwoordigt.
{
  books {
    items {
      id
      title
      price
    }
  }
}
Het resultaat is een JSON-object met dezelfde vorm als uw selectieset:
{
  "data": {
    "books": {
      "items": [
        { "id": 1, "title": "Dune", "price": 20 },
        { "id": 2, "title": "Foundation", "price": 18 }
      ]
    }
  }
}
Opmerking
Standaard retourneert DAB maximaal 100 items per query, tenzij anders geconfigureerd (runtime.pagination.default-page-size).
Querytypen
Elke entiteit ondersteunt twee standaardhoofdquery's:
| Query | Beschrijving | 
|---|---|
entity_by_pk | 
Retourneert één record op basis van de primaire sleutel | 
entities | 
Retourneert een lijst met records die overeenkomen met filters | 
Voorbeeld van het retourneren van één record:
{
  book_by_pk(id: 1010) {
    title
    year
  }
}
Voorbeeld van het teruggeven van veel:
{
  books {
    items {
      id
      title
    }
  }
}
Resultaten filteren
Gebruik het filter argument om te beperken welke records worden geretourneerd.
{
  books(filter: { title: { contains: "Foundation" } }) {
    items { id title }
  }
}
Deze query retourneert alle boeken waarvan de titel 'Foundation' bevat.
Filters kunnen vergelijkingen combineren met logische operators:
{
  authors(filter: {
    or: [
      { first_name: { eq: "Isaac" } }
      { last_name: { eq: "Asimov" } }
    ]
  }) {
    items { first_name last_name }
  }
}
Zie de verwijzing naar het filterargument voor ondersteunde operators, zoals eq, neq, lten lteisNull.
Resultaten sorteren
Het orderBy argument definieert hoe records worden gesorteerd.
{
  books(orderBy: { year: DESC, title: ASC }) {
    items { id title year }
  }
}
Dit retourneert boeken gesorteerd op year aflopend en vervolgens op title.
Zie de naslaginformatie voor orderBy-argumenten voor meer informatie.
Resultaten beperken
Het first argument beperkt het aantal records dat in één aanvraag wordt geretourneerd.
{
  books(first: 5) {
    items { id title }
  }
}
Dit retourneert standaard de eerste vijf boeken, gesorteerd op primaire sleutel.
U kunt ook het first: -1 geconfigureerde maximale paginaformaat aanvragen.
Meer informatie vindt u in de eerste verwijzing naar argumenten.
Doorlopende resultaten
Als u de volgende pagina wilt ophalen, gebruikt u het after argument met de cursor uit de vorige query.
{
  books(first: 5, after: "eyJpZCI6NX0=") {
    items { id title }
  }
}
Het after token markeert waar de vorige pagina is beëindigd.
Zie na de referentie van argumenten voor meer informatie.
Veldselectie (projectie)
In GraphQL kiest u precies welke velden in het antwoord worden weergegeven.
Er is geen wildcard zoals SELECT *. Vraag alleen aan wat u nodig hebt.
{
  books {
    items { id title price }
  }
}
U kunt ook aliassen gebruiken om de naam van velden in het antwoord te wijzigen:
{
  books {
    items {
      bookTitle: title
      cost: price
    }
  }
}
Zie de referentie voor veldprojectie voor meer informatie.