Référence rapide

Aide-mémoire GraphQL

Guide de référence rapide pour GraphQL : syntaxe des requêtes, arguments, alias, fragments, mutations, définitions de schéma SDL et requêtes HTTP.

· Publié le

GraphQL est un langage de requête pour API et un moteur d'exécution pour répondre aux requêtes avec vos données existantes.

Requêtes (Queries)

Requête de base et réponse JSON

{ status }

JSON Response:

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

Objets imbriqués

{
  hero {
    name
    height
  }
}

Listes

{
  friends {
    name
  }
}

Arguments

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

Alias

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

Noms d'opération et variables

Query Definition:

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

Variables Payload (JSON):

{
  "id": "1000"
}

Mutations

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

Fragments en ligne (Inline Fragments)

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

GraphQL via HTTP

Requête GET

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

Requête POST

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' }
  })
})

Langage de définition de schéma (SDL)

Types de base

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

type User {
  id: ID!
  name: String
}

Types scalaires natifs

Scalaire Description
Int Entier 32 bits signé
Float Nombre à virgule flottante double précision
String Chaîne de caractères UTF-8
Boolean Valeur booléenne true ou false
ID Identifiant unique sérialisé sous forme de chaîne

Mots-clés de définition de types

Mot-clé Description
type Type d'objet représentant un ensemble de champs
scalar Type scalaire primitif personnalisé
interface Type abstrait définissant des champs requis
union Type abstrait regroupant plusieurs types d'objets
enum Énumération de valeurs littérales autorisées
input Objet complexe fourni en argument de requête ou mutation

Modificateurs de type

Modificateur Description
String Chaîne autorisant null (Nullable)
String! Chaîne obligatoire non nulle (Non-nullable)
[String] Liste autorisant null avec éléments autorisant null
[String]! Liste obligatoire avec éléments autorisant null
[String!]! Liste obligatoire avec éléments obligatoires

Interfaces

interface Entity {
  id: ID!
}

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

Énumérations (Enums)

enum Direction {
  NORTH
  EAST
  SOUTH
  WEST
}

Unions

union SearchResult = Human | Droid | Starship

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

Références

Sujets associés