Referință rapidă

Cheat Sheet GraphQL

Ghid de referință rapidă pentru GraphQL: sintaxa interogărilor, argumente, aliasuri, fragmente, mutații, definiții SDL de scheme și HTTP.

· Publicat

GraphQL este un limbaj de interogare pentru API-uri și un mediu de execuție pentru satisfacerea interogărilor cu datele existente.

Interogări (Queries)

Interogare de bază și răspuns JSON

{ status }

JSON Response:

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

Obiecte imbricate

{
  hero {
    name
    height
  }
}

Liste

{
  friends {
    name
  }
}

Argumente

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

Aliasuri

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

Nume de operațiuni și variabile

Query Definition:

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

Variables Payload (JSON):

{
  "id": "1000"
}

Mutații (Mutations)

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

Fragmente inline

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

GraphQL prin HTTP

Cerere GET

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

Cerere 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)

Tipuri de bază

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

type User {
  id: ID!
  name: String
}

Tipuri scalare native

Scalar Descriere
Int Întreg pe 32 de biți cu semn
Float Număr în virgulă mobilă cu dublă precizie
String Secvență de caractere UTF-8
Boolean Valoare booleană true sau false
ID Identificator unic serializat ca șir de caractere

Cuvinte cheie pentru definirea tipurilor

Cuvânt cheie Descriere
type Tip obiect ce reprezintă un set de câmpuri
scalar Tip scalar primitiv personalizat
interface Tip abstract ce definește câmpuri necesare
union Tip abstract ce grupează mai multe tipuri de obiecte
enum Enumerare de valori de text permise
input Obiect complex transmis ca argument în operațiuni

Modificatori de tip

Modificator Descriere
String Șir de caractere ce permite null
String! Șir de caractere obligatoriu (non-nullable)
[String] Listă ce permite null cu elemente nullable
[String]! Listă obligatorie cu elemente nullable
[String!]! Listă obligatorie cu elemente obligatorii

Interfețe (Interfaces)

interface Entity {
  id: ID!
}

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

Enumerări (Enums)

enum Direction {
  NORTH
  EAST
  SOUTH
  WEST
}

Uniuni (Unions)

union SearchResult = Human | Droid | Starship

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

Referințe

Subiecte conexe