Dela via


Så här anropar du GraphQL-slutpunkter

Med GraphQL-slutpunkter i Data API Builder (DAB) kan du köra frågor mot och ändra data med precision. Varje fråga deklarerar exakt vilka fält du behöver och har stöd för argument för filtrering, ordning och växling av resultat.

Som standard är DAB värd för sin GraphQL-slutpunkt på:

https://{base_url}/graphql

Entiteter som exponeras via konfiguration ingår automatiskt i GraphQL-schemat. Om du till exempel har books och authors entiteter visas båda som rotfält i schemat.

Anmärkning

Använd en modern GraphQL-klient eller IDE (till exempel Apollo, Insomnia eller VS Code GraphQL) för att utforska schema- och autokompletteringsfälten.

Nyckelord som stöds i Data API Builder

Begrepp GraphQL Avsikt
Projection items Välj vilka fält som ska returneras
Filtering filtrera Begränsa rader efter villkor
Sortering orderBy Definiera sorteringsordningen
Sidstorlek first Begränsa objekten per sida
Fortsättning efter Fortsätt från den sista sidan

Grundläggande struktur

Varje GraphQL-fråga börjar med ett rotfält som representerar en entitet.

{
  books {
    items {
      id
      title
      price
    }
  }
}

Resultatet är ett JSON-objekt med samma form som din markeringsuppsättning:

{
  "data": {
    "books": {
      "items": [
        { "id": 1, "title": "Dune", "price": 20 },
        { "id": 2, "title": "Foundation", "price": 18 }
      ]
    }
  }
}

Anmärkning

Som standard returnerar DAB upp till 100 objekt per fråga om inget annat har konfigurerats (runtime.pagination.default-page-size).

Frågetyper

Varje entitet stöder två standardrotfrågor:

Query Beskrivning
entity_by_pk Returnerar en post baserat på sin primärnyckel
entities Returnerar en lista med poster som matchar filter

Exempel på en funktion som returnerar ett databaspost.

{
  book_by_pk(id: 1010) {
    title
    year
  }
}

Exempel som returnerar många värden:

{
  books {
    items {
      id
      title
    }
  }
}

Filtrera resultat

filter Använd argumentet för att begränsa vilka poster som returneras.

{
  books(filter: { title: { contains: "Foundation" } }) {
    items { id title }
  }
}

Den här frågan returnerar alla böcker vars titel innehåller "Foundation".

Filter kan kombinera jämförelser med logiska operatorer:

{
  authors(filter: {
    or: [
      { first_name: { eq: "Isaac" } }
      { last_name: { eq: "Asimov" } }
    ]
  }) {
    items { first_name last_name }
  }
}

Se referensen för filterargument för operatorer som stöds, till exempel eq, neqlt, lteoch isNull.

Sorteringsresultat

Argumentet orderBy definierar hur poster sorteras.

{
  books(orderBy: { year: DESC, title: ASC }) {
    items { id title year }
  }
}

Detta returnerar böcker ordnade efter year fallande, sedan efter title.

Mer information finns i argumentreferensen orderBy .

Begränsa resultat

Argumentet first begränsar hur många poster som returneras i en enda begäran.

{
  books(first: 5) {
    items { id title }
  }
}

Detta returnerar de första fem böckerna, ordnade efter primärnyckel som standard. Du kan också använda first: -1 för att begära den konfigurerade maximala sidstorleken.

Läs mer i den första argumentreferensen.

Fortsatt resultat

Om du vill hämta nästa sida använder du after argumentet med markören från föregående fråga.

{
  books(first: 5, after: "eyJpZCI6NX0=") {
    items { id title }
  }
}

Token after markerar var den tidigare sidan slutade. Mer information finns i referensen efter argument .

Fältval (projektion)

I GraphQL väljer du exakt vilka fält som ska visas i svaret. Det finns inget jokertecken som SELECT *. Begär bara det du behöver.

{
  books {
    items { id title price }
  }
}

Du kan också använda alias för att byta namn på fält i svaret:

{
  books {
    items {
      bookTitle: title
      cost: price
    }
  }
}

Mer information finns i referensen för fältprojektion .