Szybka pomoc

Ściągawka GraphQL

Szybki przewodnik po GraphQL: składnia zapytań, argumenty, aliasy, fragmenty, mutacje, definicje schematów SDL, typy skalarne i HTTP.

· Opublikowano

GraphQL to język zapytań dla interfejsów API oraz środowisko wykonawcze do realizacji zapytań przy użyciu istniejących danych.

Zapytania (Queries)

Podstawowe zapytanie i odpowiedź JSON

{ status }

JSON Response:

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

Zagnieżdżone obiekty

{
  hero {
    name
    height
  }
}

Listy

{
  friends {
    name
  }
}

Argumenty

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

Aliasy

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

Nazwy operacji i zmienne

Query Definition:

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

Variables Payload (JSON):

{
  "id": "1000"
}

Mutacje (Mutations)

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

Fragmenty wbudowane (Inline Fragments)

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

GraphQL przez HTTP

Żądanie GET

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

Żądanie 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)

Typy podstawowe

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

type User {
  id: ID!
  name: String
}

Wbudowane typy skalarne

Skalar Opis
Int 32-bitowa liczba całkowita ze znakiem
Float Liczba zmiennoprzecinkowa podwójnej precyzji
String Ciąg znaków UTF-8
Boolean Wartość logiczna true lub false
ID Unikalny identyfikator serializowany jako ciąg znaków

Słowa kluczowe definicji typów

Słowo kluczowe Opis
type Typ obiektowy reprezentujący zbiór pól
scalar Niestandardowy prymitywny typ skalarny
interface Typ abstrakcyjny definiujący zestaw pól do zaimplementowania
union Typ abstrakcyjny grupujący odrębne typy obiektowe
enum Wyliczenie dozwolonych wartości znakowych
input Złożony obiekt wejściowy przekazywany jako argument

Modyfikatory typów (Type Modifiers)

Modyfikator Opis
String Ciąg znaków dopuszczający null
String! Wymagany ciąg znaków (non-nullable)
[String] Lista dopuszczająca null zawierająca elementy nullable
[String]! Wymagana lista zawierająca elementy nullable
[String!]! Wymagana lista zawierająca elementy wymagane

Interfejsy (Interfaces)

interface Entity {
  id: ID!
}

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

Typy wyliczeniowe (Enums)

enum Direction {
  NORTH
  EAST
  SOUTH
  WEST
}

Unie (Unions)

union SearchResult = Human | Droid | Starship

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

Źródła i dokumentacja

Powiązane tematy