Sobes.tech
Junior

Čo je to GraphQL?

sobes.tech AI

Odpoveď od AI

GraphQL je jazyk dotazov pre API a prostredie na vykonávanie týchto dotazov na vašich dátach. Ponúka alternatívu k REST, umožňujúc klientovi žiadať len tie údaje, ktoré potrebuje, v jednom dotaze.

Kľúčové koncepty:

  1. Schéma: Definuje dostupné typy dát v API, ich vzťahy a dostupné operácie (dotazy, mutácie, odberné služby).
  2. Dotazy (Queries): Používajú sa na čítanie dát. Klient uvádza, ktoré polia potrebuje.
  3. Mutácie: Používajú sa na zmenu dát (vytváranie, aktualizácia, mazanie).
  4. Odberné služby (Subscriptions): Používajú sa na získavanie dát v reálnom čase cez trvalé spojenie (napríklad WebSocket).

Príklad dotazu:

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

Odpoveď na tento dotaz môže vyzerať takto:

{
  "data": {
    "user": {
      "name": "Ivan",
      "email": "ivan@example.com",
      "posts": [
        { "title": "Môj prvý článok" },
        { "title": "O GraphQL" }
      ]
    }
  }
}

Výhody oproti REST:

  • Vyhýbanie sa nadbytočným dátam (Over-fetching): Klient dostáva len požadované polia.
  • Vyhýbanie sa nedostatku dát (Under-fetching) / viacero požiadaviek: Často umožňuje získať všetky potrebné informácie v jednom dotaze, na rozdiel od REST, kde môže byť potrebné viac požiadaviek na rôzne endpointy.
  • Silné typovanie: Schéma poskytuje jasnú dokumentáciu a validáciu dotazov.
  • Lepší výkon: Menší objem prenesených dát.
  • Flexibilita na strane klienta: Klienti sa môžu vyvíjať nezávisle od servera, žiadať dáta podľa potreby.

Nevýhody:

  • Složitá konfigurácia na strane servera.
  • Problémy s cache-ovaním v porovnaní so štandardnými metódami cacheovania REST (napríklad na úrovni HTTP).
  • Spracovanie chýb je zložitejšie v porovnaní s REST (kde sa používajú štandardné HTTP kódy stavu).