Kurzreferenz

GraphQL Spickzettel

Kurzreferenz für GraphQL: Abfragesyntax, Argumente, Aliase, Fragmente, Mutationen, SDL-Schemadefinitionen, Skalare und HTTP-Nutzung.

· Veröffentlicht

GraphQL ist eine Abfragesprache für APIs und eine Laufzeitumgebung zur Erfüllung von Abfragen mit vorhandenen Daten.

Abfragen (Queries)

Basisabfrage und JSON-Antwort

{ status }

JSON Response:

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

Verschachtelte Objekte

{
  hero {
    name
    height
  }
}

Listen

{
  friends {
    name
  }
}

Argumente

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

Aliase

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

Operationsnamen und Variablen

Query Definition:

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

Variables Payload (JSON):

{
  "id": "1000"
}

Mutationen (Mutations)

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

Inline-Fragmente (Union- und Interface-Abfragen)

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

GraphQL über HTTP

GET-Anfrage

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

POST-Anfrage

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
}

Eingebaute Skalare

Skalar Beschreibung
Int Vorzeichenbehaftete 32-Bit-Ganzzahl
Float Gleitkommazahl mit doppelter Genauigkeit
String UTF-8 Zeichenkette
Boolean Wahrheitswert true oder false
ID Eindeutige ID als Zeichenkette serialisiert

Schlüsselwörter zur Typdefinition

Schlüsselwort Beschreibung
type Objekttyp mit einer Menge von Feldern
scalar Benutzerdefinierter primitiver Skalartyp
interface Abstrakter Typ mit Feldern, die Typen implementieren müssen
union Abstrakter Typ zur Gruppierung verschiedener Objekttypen
enum Aufzählung diskreter erlaubter Zeichenkettenwerte
input Komplexes Argumentobjekt für Abfragen oder Mutationen

Typmodifikatoren

Modifikator Beschreibung
String Nullable Zeichenkette
String! Non-nullable Zeichenkette
[String] Nullable Liste mit nullable Zeichenketten
[String]! Non-nullable Liste mit nullable Zeichenketten
[String!]! Non-nullable Liste mit non-nullable Zeichenketten

Interfaces

interface Entity {
  id: ID!
}

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

Enums (Aufzählungen)

enum Direction {
  NORTH
  EAST
  SOUTH
  WEST
}

Unions (Vereinigungstypen)

union SearchResult = Human | Droid | Starship

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

Referenzen

Verwandte Themen