Čo je GraphQL?
GraphQL je dopytovací jazyk pre API a serverový runtime na vykonávanie týchto dopytov. Vyvinul ho Facebook v roku 2012 a verejne ho sprístupnil v roku 2015. Na rozdiel od REST umožňuje klientovi presne špecifikovať, aké dáta potrebuje.
Definícia GraphQL
Čo je GraphQL
GraphQL je open-source dopytovací jazyk pre API, ktorý interne vyvinul Facebook v roku 2012 pre potreby svojej mobilnej aplikácie. Verejne bol uvoľnený v roku 2015 a od roku 2018 je spravovaný neziskovou organizáciou GraphQL Foundation pod záštitou Linux Foundation.
GraphQL rieši dva hlavné problémy REST API: over-fetching (server vracia viac dát, než klient potrebuje) a under-fetching (klient musí posielať viacero požiadaviek, aby získal všetky potrebné dáta).
Kľúčové koncepty
- Queries (dopyty) — klient definuje presnú štruktúru dát, ktoré chce získať
- Mutations (mutácie) — operácie na zmenu dát (vytváranie, aktualizácia, mazanie)
- Subscriptions (odber) — real-time notifikácie, keď sa dáta zmenia
- Schema — striktne typovaný popis všetkých dostupných dát a operácií, napísaný v SDL (Schema Definition Language)
GraphQL využívajú spoločnosti ako GitHub, Shopify, Twitter a Airbnb. Na rozdiel od REST, kde každý endpoint vracia fixnú štruktúru, GraphQL má typicky jeden endpoint (/graphql) a klient si sám určí, čo chce.
Praktický príklad
Príklad: Chcete na stránke e-shopu zobraziť produkt aj s recenziami.
S REST API: Musíte poslať dve požiadavky — GET /produkty/123 a GET /produkty/123/recenzie. Každá vráti aj dáta, ktoré nepotrebujete.
S GraphQL: Pošlete jednu požiadavku a presne špecifikujete, čo chcete: názov produktu, cenu a posledné 3 recenzie. Server vráti presne tieto dáta — nič viac, nič menej.
Často kladené otázky
Čo je GraphQL a kto ho vytvoril?
GraphQL je dopytovací jazyk pre API vyvinutý Facebookom v roku 2012. Umožňuje klientovi presne špecifikovať, aké dáta potrebuje, čím eliminuje zbytočný prenos dát.
Aký je rozdiel medzi GraphQL a REST?
REST má viacero endpointov, kde každý vracia fixnú štruktúru dát. GraphQL má jeden endpoint, kde klient v dopytu presne definuje štruktúru odpovede. GraphQL eliminuje over-fetching a under-fetching.
Kedy použiť GraphQL namiesto REST?
GraphQL je výhodný pri komplexných dátových modeloch, mobilných aplikáciách (kde záleží na veľkosti prenesených dát) a projektoch s rýchlo sa meniacimi požiadavkami na frontend. Pre jednoduché CRUD API môže byť REST jednoduchší.
Je GraphQL náhrada za REST?
Nie nutne. GraphQL a REST môžu koexistovať v jednom projekte. GraphQL je vhodnejší pre komplexné dopyty, zatiaľ čo REST je jednoduchší na implementáciu pre jednoduché operácie.
Súvisiace pojmy
Potrebujete pomôcť s webom?
Napíšte mi a poradím vám s vaším projektom. Prvá konzultácia je zadarmo a nezáväzná.