Sobes.tech
Junior

Co je to GraphQL?

sobes.tech AI

Odpověď od AI

GraphQL je jazyk dotazů pro API a prostředí pro jejich vykonávání na vašich datech. Nabízí alternativu k REST, umožňující klientovi žádat pouze ta data, která potřebuje, v jednom dotazu.

Klíčové koncepty:

  1. Schéma: Definuje dostupné datové typy v API, jejich vztahy a dostupné operace (dotazy, mutace, předplatné).
  2. Dotazy (Queries): Používají se k načítání dat. Klient uvádí, která pole potřebuje.
  3. Mutace: Používají se ke změně dat (vytváření, aktualizace, mazání).
  4. Předplatné (Subscriptions): Používají se k získávání dat v reálném čase přes trvalé spojení (například WebSocket).

Příklad dotazu:

query GetUserData {
  user(id: "123") {
    name
    email
    posts {
      title
    }
  }
}

Odpověď na tento dotaz může vypadat takto:

{
  "data": {
    "user": {
      "name": "Ivan",
      "email": "ivan@example.com",
      "posts": [
        { "title": "Můj první článek" },
        { "title": "O GraphQL" }
      ]
    }
  }
}

Výhody oproti REST:

  • Vyhýbání se nadbytečným datům (Over-fetching): Klient obdrží pouze požadovaná pole.
  • Vyhýbání se nedostatku dat (Under-fetching) / více dotazů: Často umožňuje získat všechny potřebné informace v jednom dotazu, na rozdíl od REST, kde může být potřeba více dotazů na různé endpointy.
  • Silná typizace: Schéma poskytuje jasnou dokumentaci a validaci dotazů.
  • Lepší výkon: Menší objem přenášených dat.
  • Flexibilita na straně klienta: Klienti se mohou vyvíjet nezávisle na serveru, žádají data podle potřeby.

Nevýhody:

  • Složitost konfigurace na straně serveru.
  • Problémy s cachováním ve srovnání se standardními metodami cacheování REST (například na úrovni HTTP).
  • Chybové hlášení je složitější ve srovnání s REST (kde se používají standardní HTTP status kódy).