Technologie

Co je GraphQL?

GraphQL je dotazovací jazyk a runtime pro API, který vyvinul Facebook v roce 2012 a open-sourcoval v roce 2015. Na rozdíl od REST, kde server rozhoduje, jaká data vrátí, v GraphQL klient přesně specifikuje strukturu požadovaných dat. Pošlete dotaz (query) popisující, co přesně potřebujete, a server vrátí data přesně v tomto tvaru — nic navíc, nic chybějícího. Používají ho společnosti jako GitHub, Shopify, Twitter nebo Airbnb.

GraphQL vs REST — klíčové rozdíly

V REST API má každý zdroj svůj endpoint (/api/users, /api/products, /api/orders). Pokud potřebujete data z více zdrojů, musíte provést více požadavků. Navíc každý endpoint vrací pevně danou strukturu dat — i když potřebujete jen jméno uživatele, dostanete celý profil. GraphQL řeší oba problémy: máte jeden endpoint, posíláte přesný dotaz a dostáváte přesná data. To snižuje objem přenesených dat a počet HTTP požadavků.

Jak GraphQL dotaz vypadá

GraphQL dotaz připomíná JSON bez hodnot. Chcete jméno a email uživatele s jeho posledními 3 objednávkami? Napíšete query { user(id: 1) { name, email, orders(last: 3) { total, date } } }. Server vrátí přesně tuto strukturu s daty. Schema definuje, jaké dotazy jsou povolené a jaké typy dat existují. To vytváří silný kontrakt mezi klientem a serverem a funguje jako živá dokumentace API.

Kdy použít GraphQL a kdy REST

GraphQL se vyplatí u aplikací s komplexními datovými vztahy (e-shopy, sociální sítě, dashboardy), kde různé části UI potřebují různá data ze stejných zdrojů. Také je výhodný pro mobilní aplikace, kde záleží na objemu dat. REST je jednodušší pro základní CRUD operace, menší API a projekty, kde je struktura dat pevně daná. V praxi se oba přístupy mohou v jednom projektu kombinovat — GraphQL pro čtení, REST pro jednoduché akce.

GraphQL v ekosystému Next.js

V kombinaci s Next.js se GraphQL výborně doplňuje. Apollo Client nebo urql na straně klienta umožňují deklarativní data fetching v React komponentách. Na serveru můžete použít Apollo Server nebo graphql-yoga. Shopify a další e-commerce platformy nabízejí GraphQL API jako primární rozhraní — Storefront API pro frontend a Admin API pro správu. Headless CMS jako Contentful, Hygraph nebo Strapi také podporují GraphQL pro dotazování obsahu.

Praktický příklad

Představte si stránku e-shopu s detailem produktu. Potřebujete název, cenu, popis, obrázky, kategorii, recenze (průměrné hodnocení a posledních 5 recenzí) a doporučené produkty. S REST API byste museli volat /products/123, /products/123/reviews, /products/123/recommendations — tři požadavky. S GraphQL pošlete jeden dotaz, který přesně popíše, co potřebujete, a dostanete vše najednou. Rychlejší, efektivnější, přehlednější.

Zvažujete GraphQL pro váš projekt? Pomůžeme vám navrhnout a implementovat API, které vyhovuje vašim potřebám.

Rádi vám pomůžeme. Konzultace je zdarma a bez závazků.

Ozvat se nám

Potřebujete pomoct s vaším projektem?

Neváhejte se ozvat — rádi vám poradíme s čímkoli od tvorby webu po online marketing. Konzultace je zdarma.