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:
- Schéma: Definuje dostupné datové typy v API, jejich vztahy a dostupné operace (dotazy, mutace, předplatné).
- Dotazy (Queries): Používají se k načítání dat. Klient uvádí, která pole potřebuje.
- Mutace: Používají se ke změně dat (vytváření, aktualizace, mazání).
- 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).