GraphQL – rychlejší a bezpečnější komunikace klienta se serverem

Při vývoji webových aplikací sledujeme aktuální trendy a nové technologie, které už prokázaly svou hodnotu, zapojujeme do běžného provozu. Jednou z nich je GraphQL, moderní cesta, jakou si klientský prohlížeč a server mohou předávat data. Jaké má GraphQL výhody a co pro nás jeho používání znamená?

GraphQL je takzvaný dotazovací jazyk, který v roce 2012 začal vyvíjet technologický gigant Facebook. Ten nebyl spokojený s dosavadními možnostmi předávání dat mezi serverem a klientem a rozhodl se zprvu pro vlastní potřeby přijít s technologií, která v této oblasti vyřeší stávající nedostatky. Po osmi letech, kdy GraphQL používá nejen Facebook sám, ale velké i malé weby napříč internetem, je jasné, že se záměr podařil – a GraphQL zaujalo i nás.

Proč jsme se rozhodli jazyk GraphQL používat? Stejně jako Facebook jsme narazili na to, že starší a nejspíš nejzavedenější způsob, kterým si server a klient předávají data, označovaný jako REST API, má několik vážných nedostatků. Ty GraphQL pomáhá řešit nám vývojářům, mají ale i praktické dopady na uživatele.

Klasická REST API funguje na základě jednotlivých serverových koncových bodů - endpointů, tedy jedinečných URL adres. Když se chce uživatel třeba přihlásit, odešle se požadavek na adresu api/login, když chce změnit heslo, zavolá se adresa api/change_password a podobně. Takových endpointů mohou být ve velkých webových aplikacích stovky. GraphQL oproti tomu nabízí jeden „chytrý“ endpoint, který s požadavky sám pracuje, jak je potřeba. Protože je v našich aplikacích požadavků na server spousta, GraphQL je pro nás výhodné: oproti REST API si nemusíme v každém požadavku říkat o celý balíček dat, ale můžeme si vyžádat jen ty hodnoty, které právě potřebujeme.

Další výhoda, kterou GraphQL přináší, je typový systém. Jde vlastně o jakési šablony, které určují, jaká data a jakého typu je server schopný poskytnout a jaká očekává klient. Kdyby chtěl například klient zaslat informace o stavu svého peněžního účtu, musí mít typ daného pole v datech označený jako „číslo s desetinnými místy“. Pokud by pak server očekával požadavek třeba na typ „text“, k výměně dat vůbec nedojde a nahlásí se chyba, kterou je tak snadno možné odchytit už při vývoji.

Šablony klienta a serveru se totiž vzájemně porovnají a GraphQL předem ověří, jestli server na daný požadavek vůbec může odpovědět. To u REST API, které je založené na endpointech, na které se dotaz zašle bez ohledu na jeho správnost vždy, není možné. Typový systém nám pomáhá i při vývoji webových aplikací, protože šablony slouží zároveň i jako dokumentace – snadno vidíme, jaké typy dotazů jsou k dispozici a jak s nimi pracovat, s čímž nám pomáhá i našeptávací rozšíření, které GraphQL nabízí.

A v neposlední řadě je GraphQL součástí moderního technologického balíčku, který umožňuje stavět serverové i klientské části pomocí jazyka JavaScript. Ten se spolu s na něm postavenými technologiemi i díky snahám Facebooku nebo Microsoftu rychle vyvíjí a dohání prověřené technologie založené například na jazyku Java.

Technologický balík postavený na frameworku React, serveru next.js a právě GraphQL v FG Forrest používáme hned na několika projektech, například na webu pro správu zaměstnaneckých benefitů Můj Up.

Michal Zlatkovský, JavaScript Developer FG Forrest

Mohlo by vás zajímat

Redesign webu pojišťovny Kooperativa (záznam přednášky z UX Day 2023)

Podívejte se na záznam přednášky o rozsáhlém redesignu, který jsme realizovali pro pojišťovnu Kooperativa. Těšte se na čísla, data i různé zajímavosti!

Celý článek

EvitaDB – inovace pro e-shopy od FG Forrest je zase o kus dál

Moderní databáze evitaDB pro e-shopy naplňuje očekávání našich vývojářů. Podívejte se na první výsledky z nasazení a nové funkce našeho vlastního produktu.

Celý článek

Přeskočit na hlavní nabídku