Obsah

GraphQL

GraphQL vyvinul Facebook v roce 2012 (open-source od roku 2015) jako řešení problémů s efektivitou mobilních aplikací. Je to silně typovaný jazyk, který umožňuje klientům získat všechna potřebná data v rámci jediného síťového požadavku.

1. Hlavní rozdíly oproti RESTu

V tradičním RESTu musíte často volat několik adres (např. `/uzivatel/1` a pak `/uzivatel/1/prispevky`), abyste získali kompletní data. GraphQL to mění:

—

2. Tři pilíře GraphQL

Provoz GraphQL stojí na třech základních operacích:

—

3. Schema a Typový systém

Srdcem každého GraphQL API je Schema, které definuje, jaká data jsou dostupná. Používá k tomu jazyk SDL (Schema Definition Language).

# Definice typu na serveru
type Uzivatel {
  id: ID!
  jmeno: String!
  email: String
  prispevky: [Prispevek]
}

# Dotaz od klienta
query {
  uzivatel(id: "42") {
    jmeno
    email
  }
}

—

4. Resolvery (Zpracování dat)

GraphQL neříká, jak máte data ukládat. Na serveru existují funkce zvané Resolvery, které mají za úkol „vyřešit“ (získat) konkrétní pole dotazu. Jeden resolver může sahat do SQL databáze, druhý do NoSQL a třetí může volat úplně jiné API.

—

5. Výhody a nevýhody

Výhody Nevýhody
Flexibilita: Klient si říká o strukturu dat. Komplexita: Náročnější implementace na straně serveru.
Typová bezpečnost: Automatická dokumentace a validace. Cachování: Je složitější než u RESTu (HTTP cache zde nefunguje).
Verzování: Není potřeba `/v1/`, `/v2/` – stačí přidávat nová pole. N-plus-one problém: Riziko neefektivních databázových dotazů.

—

6. Populární nástroje


Související články:

Tagy: programming api graphql facebook web-development backend query-language