REST vs GraphQL: aký je rozdiel a ktorý použiť?
REST a GraphQL sú dva spôsoby návrhu API – dohodnutého spôsobu, akým obrazovky vašej aplikácie (alebo iné programy) žiadajú váš backend o dáta. Pri REST existuje samostatná URL pre každý druh vecí, napríklad /customers alebo /orders, a každá vracia pevne danú štruktúru dát. Pri GraphQL býva jedna URL a volajúci pošle dotaz, ktorý vypíše presne tie polia, ktoré chce dostať späť. Pre väčšinu aplikácií postavených s AI je REST jednoduchšou a lepšou predvolenou voľbou.
Prečo na tom záleží pri tvorbe s AI
Keď požiadate nástroj na tvorbu s AI o „aplikáciu s backendom“, musí zvoliť, ako sa frontend a backend budú dorozumievať. Nemusíte to rozhodovať pri každom projekte, ale tieto pojmy uvidíte v kóde, v dokumentácii a pri pripájaní externých služieb. Niektoré služby ponúkajú len jeden štýl: mnohé služby sprístupňujú REST API, zatiaľ čo iné – napríklad Shopify a GitHub – ponúkajú alebo uprednostňujú GraphQL. Pochopenie rozdielu vám pomôže zorientovať sa v tom, čo vidíte, a vyhnúť sa zbytočnej zložitosti. Ak je pre vás pojem „API“ nový, začnite s čo je API.
Každodenná analógia
REST je pevné menu v reštaurácii. Každé jedlo (endpoint) príde tak, ako ho kuchyňa navrhla. Objednáte si jedlo „zákazník“ a dostanete celý tanier – meno, e-mail, adresu, dátum registrácie – aj keď ste chceli len meno. Chcete aj posledné objednávky zákazníka? To je ďalšie jedlo.
GraphQL je objednávanie à la carte u jedného čašníka. Napíšete presne, čo chcete: „meno zákazníka a dátumy a sumy jeho posledných troch objednávok.“ Jedna objednávka, jeden tanier, len to, čo ste žiadali. Kuchyňa však musí byť pripravená zvládnuť ľubovoľnú kombináciu, ktorú zákazníci napíšu.
Rovnaká požiadavka oboma spôsobmi
Povedzme, že stránka zákazníka potrebuje meno zákazníka a jeho tri najnovšie objednávky.
Pri REST sú to zvyčajne dve požiadavky:
GET /api/customers/42
GET /api/customers/42/orders?limit=3
Prvá odpoveď môže obsahovať viac, než stránka potrebuje:
{ "id": 42, "name": "Lena Park", "email": "lena@example.com", "address": "…", "createdAt": "…" }
Pri GraphQL je to jedna požiadavka, zvyčajne POST na jediný endpoint, napríklad /graphql, s dotazom:
query {
customer(id: 42) {
name
orders(last: 3) {
date
total
}
}
}
A odpoveď presne zrkadlí dotaz:
{
"data": {
"customer": {
"name": "Lena Park",
"orders": [
{ "date": "2026-09-20", "total": 48.0 },
{ "date": "2026-09-02", "total": 19.5 },
{ "date": "2026-08-15", "total": 72.25 }
]
}
}
}
Oba vracajú JSON. Rozdiel je v tom, kto určuje tvar: pri REST server, pri GraphQL volajúci v rámci toho, čo schéma servera dovoľuje.
Porovnanie vedľa seba
| REST | GraphQL | |
|---|---|---|
| URL | Mnoho – jedna na zdroj | Zvyčajne jedna (/graphql) |
| Kto tvorí odpoveď | Server | Klient, cez dotaz |
| Čítanie a zápis | HTTP metódy: GET, POST, PATCH, DELETE | Dotazy (čítanie) a mutácie (zápis) |
| Načítanie súvisiacich dát | Často viac požiadaviek | Často jedna požiadavka |
| Nadmerné načítanie (polia, ktoré nepotrebujete) | Časté | Vyhnutie sa vďaka návrhu |
| Schéma / typy | Voliteľné (napr. OpenAPI popis) | Povinné – typovaná schéma je súčasťou |
| HTTP cache (prehliadače, CDN) | Jednoduché pre požiadavky GET | Náročnejšie; zvyčajne rieši klientska knižnica |
| Chyby | HTTP stavové kódy (404, 401, 500) | Často zoznam errors v tele odpovede, často so stavom 200 |
| Bezpečnosť a kontrola nákladov | Pravidlá pre každý endpoint | Treba aj limity hĺbky a veľkosti dotazu |
| Krivka učenia a nástroje | Nízka; funguje s akýmkoľvek HTTP nástrojom | Vyššia; potrebuje GraphQL server a zvyčajne klientsku knižnicu |
Kde sa každý hodí
Zvoľte REST, keď:
- staviate typickú aplikáciu: rezervačný systém, CRM, dashboard, obchod.
- jeden frontend hovorí s jedným backendom a ovládate oba.
- chcete najjednoduchšiu vec na ladenie, cache a zabezpečenie.
- budú vašu aplikáciu volať iné služby (webhooky a väčšina integrácií očakáva endpointy v štýle REST).
Zvážte GraphQL, keď:
- viacero rôznych klientov – web, mobilná aplikácia, partnerské integrácie – potrebuje veľmi odlišné časti tých istých dát.
- vaše dáta sú hlboko previazané (produkty, varianty, recenzie, predajcovia, sklad) a obrazovky ich musia kombinovať mnohými spôsobmi.
- využívate službu, ktorá ponúka GraphQL ako svoje hlavné API.
Užitočné pravidlo: ak si nie ste istí, či GraphQL potrebujete, pravdepodobne ešte nie. Pridať ho neskôr je jednoduchšie než ho odstrániť.
Kľúčové pojmy
| Pojem | Význam |
|---|---|
| Endpoint | Konkrétna URL, na ktorú API odpovedá. |
| Zdroj | Druh vecí, ktoré API spravuje – rezervácie, zákazníci. |
| Schéma | Úplný, typovaný popis toho, čo GraphQL API môže vrátiť. |
| Dotaz / mutácia | V GraphQL: požiadavka na čítanie dát / na ich zmenu. |
| Resolver | Kód servera, ktorý načíta dáta pre jedno pole GraphQL. |
| Nadmerné / nedostatočné načítanie | Získanie viac dát, než treba / potreba ďalších požiadaviek, aby ste dostali dosť. |
| Problém N+1 | Keď načítanie zoznamu a detailov ku každej položke spustí jeden databázový dotaz na položku – klasická pasca výkonu GraphQL (aj REST). |
| OpenAPI | Štandardný spôsob, ako opísať endpointy a dáta REST API. |
Bežné mylné predstavy
- „GraphQL je novší, takže je lepší.“ Rieši konkrétne problémy. Pre jednu aplikáciu s jedným frontendom často pridá prácu bez väčšieho prínosu.
- „GraphQL je databáza.“ Nie je. Je to vrstva API; za ňou server stále číta z vašej databázy.
- „GraphQL je vždy rýchlejší.“ Menej požiadaviek môže pomôcť pri pomalých mobilných sieťach, ale neobmedzený dotaz môže načítať obrovské množstvo dát. Výkon závisí od backendu.
- „REST znamená prísny štandard.“ V praxi „REST API“ voľne znamená URL zdrojov plus HTTP metódy a JSON. Mnohé dobré API formálne pravidlá ohýbajú.
- „Stav 200 znamená, že to fungovalo.“ Pri GraphQL skontrolujte pole
errors– požiadavka môže čiastočne zlyhať a stále vrátiť 200.
Čo sa opýtať nástroja na tvorbu s AI
- „Použi jednoduché REST API s JSON, pokiaľ nie je jasný dôvod inak – ak si myslíš, že treba GraphQL, vysvetli prečo.“
- „Vypíš každý endpoint, čo vracia a kto ho smie volať.“
- „Pre stránku zákazníka vráť len polia, ktoré stránka používa.“
- „Pridaj stránkovanie do endpointov so zoznamami, aby nikdy nevracali tisíce riadkov naraz.“
- „Táto služba má len GraphQL API – volaj ju zo servera, kľúč uchovaj v tajomstvách a žiadaj len polia, ktoré potrebujeme.“
- „Vracaj správne HTTP stavové kódy a chybové správy v JSON.“
REST a GraphQL v Mythex
Dokumentácia Mythex obsahuje recept na budovanie REST API backendu so štartovacím promptom a backend môže bežať v Node, Python (FastAPI), C# alebo Java vedľa vašej webovej aplikácie. Dokumentácia neopisuje šablónu GraphQL, takže ak ju chcete, výslovne si ju vyžiadajte a uveďte prečo. Volanie GraphQL API tretej strany funguje ako každá iná externá služba – pozrite si integrovať ľubovoľné API. Súvisiace čítanie: frontend vs backend a ako vytvoriť REST API.
Otázky
Aký je hlavný rozdiel medzi REST a GraphQL?
REST API má veľa URL, jednu pre každý druh zdroja, a každá vracia pevne danú štruktúru dát. GraphQL API zvyčajne používa jedinú URL a klient pošle dotaz, ktorý presne opíše polia, ktoré chce, takže jedna požiadavka môže získať súvisiace dáta v tvare, aký potrebuje obrazovka.
Je GraphQL lepší ako REST?
Vo všeobecnosti ani jedno nie je lepšie. GraphQL pomáha, keď mnohé rôzne obrazovky alebo aplikácie potrebujú rôzne časti zložitých, previazaných dát. REST sa jednoduchšie buduje, ukladá do cache a zabezpečuje a je lepšou predvolenou voľbou pre väčšinu malých a stredných aplikácií.
Je GraphQL rýchlejší ako REST?
Nie automaticky. Môže znížiť počet požiadaviek, ktoré obrazovka pošle, ale jeden zložitý dotaz môže byť na serveri pomalý a drahý. Rýchlosť závisí oveľa viac od toho, ako sú postavené backend a databáza, než od štýlu API.
Môže aplikácia používať REST aj GraphQL?
Áno. Mnohé aplikácie sprístupňujú GraphQL API pre vlastný frontend a REST používajú pre webhooky a integrácie tretích strán, alebo z REST backendu volajú GraphQL API iných firiem.