Riferimento rapido

Cheat Sheet GraphQL

Guida rapida a GraphQL: sintassi delle query, argomenti, alias, frammenti, mutazioni, definizioni di schema SDL e utilizzo su HTTP.

· Pubblicato

GraphQL è un linguaggio di interrogazione per API e un runtime per soddisfare le query con i dati esistenti.

Query

Query di base e risposta JSON

{ status }

JSON Response:

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

Oggetti annidati

{
  hero {
    name
    height
  }
}

Liste

{
  friends {
    name
  }
}

Argomenti

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

Alias

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

Nomi delle operazioni e variabili

Query Definition:

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

Variables Payload (JSON):

{
  "id": "1000"
}

Mutazioni (Mutations)

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

Frammenti inline (Inline Fragments)

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

GraphQL su HTTP

Richiesta GET

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

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

Schema Definition Language (SDL)

Tipi di base

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

type User {
  id: ID!
  name: String
}

Tipi scalari integrati

Scalare Descrizione
Int Intero a 32 bit con segno
Float Numero in virgola mobile a doppia precisione
String Sequenza di caratteri UTF-8
Boolean Valore booleano true o false
ID Identificatore univoco serializzato come stringa

Parole chiave di definizione dei tipi

Parola chiave Descrizione
type Tipo di oggetto con un insieme di campi
scalar Tipo scalare primitivo personalizzato
interface Tipo astratto che definisce campi da implementare
union Tipo astratto che raggruppa diversi tipi di oggetti
enum Enumerazione di valori stringa consentiti
input Oggetto complesso passato come argomento

Modificatori di tipo

Modificatore Descrizione
String Stringa che ammette null
String! Stringa non nulla obbligatoria
[String] Lista che ammette null con stringhe che ammettono null
[String]! Lista non nulla con stringhe che ammettono null
[String!]! Lista non nulla con stringhe obbligatorie

Interfacce (Interfaces)

interface Entity {
  id: ID!
}

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

Enumerazioni (Enums)

enum Direction {
  NORTH
  EAST
  SOUTH
  WEST
}

Unioni (Unions)

union SearchResult = Human | Droid | Starship

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

Riferimenti

Argomenti correlati