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:
- Schéma: Definuje dostupné typy dát v API, ich vzťahy a dostupné operácie (dotazy, mutácie, odberné služby).
- Dotazy (Queries): Používajú sa na čítanie dát. Klient uvádza, ktoré polia potrebuje.
- Mutácie: Používajú sa na zmenu dát (vytváranie, aktualizácia, mazanie).
- 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).