Delen via


GraphQL-eindpunten aanroepen

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.