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