Snelle referentie

GraphQL Spiekbrief

Snelle referentiegids voor GraphQL: querysyntaxis, argumenten, aliassen, fragmenten, mutaties, SDL-schemadefinities en HTTP-eindpunten.

· Gepubliceerd

GraphQL is een querytaal voor API's en een runtime voor het uitvoeren van query's met bestaande applicatiegegevens.

Query's

Basisquery en JSON-antwoord

{ status }

JSON Response:

{
  "data": {
    "status": "available"
  }
}

Geneste objecten

{
  hero {
    name
    height
  }
}

Lijsten

{
  friends {
    name
  }
}

Argumenten

{
  hero(id: "1000") {
    id
    name
  }
}

Aliassen

{
  luke: hero(id: "1000") {
    name
  }
  han: hero(id: "1001") {
    name
  }
}

Operatienamen en variabelen

Query Definition:

query FindHero($id: String!) {
  hero(id: $id) {
    name
  }
}

Variables Payload (JSON):

{
  "id": "1000"
}

Mutaties (Mutations)

mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
  createReview(episode: $ep, review: $review) {
    stars
    commentary
  }
}

Inline-fragmenten

{
  search(q: "john") {
    id
    ... on User {
      name
    }
    ... on Comment {
      body
      author {
        name
      }
    }
  }
}

GraphQL via HTTP

GET-verzoek

fetch('https://api.example.com/graphql?query={me{name}}')

POST-verzoek

fetch('https://api.example.com/graphql', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    query: 'query GetHero($id: String!) { hero(id: $id) { name } }',
    variables: { id: '1000' }
  })
})

Schema Definition Language (SDL)

Basistypen

type Query {
  me: User
  users(limit: Int): [User]
}

type User {
  id: ID!
  name: String
}

Ingebouwde scalaire typen

Scalair Beschrijving
Int 32-bits geheel getal met teken
Float Drijvende-kommagetal met dubbele precisie
String UTF-8 tekenreeks
Boolean Booleaanse waarde true of false
ID Unieke identificatie geserialiseerd als tekenreeks

Trefwoorden voor typedefinitie

Trefwoord Beschrijving
type Objecttype dat een set velden vertegenwoordigt
scalar Aangepast primitief scalair type
interface Abstract type dat velden definieert die moeten worden geïmplementeerd
union Abstract type dat meerdere objecttypen groepeert
enum Opsomming van toegestane tekenreekswaarden
input Complex invoerobject als argument

Typemodifiers

Modifier Beschrijving
String Nullable tekenreeks
String! Non-nullable verplichte tekenreeks
[String] Nullable lijst met nullable tekenreeksen
[String]! Verplichte lijst met nullable tekenreeksen
[String!]! Verplichte lijst met verplichte tekenreeksen

Interfaces

interface Entity {
  id: ID!
}

type User implements Entity {
  id: ID!
  name: String
}

Enums (Opsommingen)

enum Direction {
  NORTH
  EAST
  SOUTH
  WEST
}

Unions

union SearchResult = Human | Droid | Starship

type Query {
  search(text: String): [SearchResult]
}

Referenties

Verwante onderwerpen