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

Bezpečnost informací je naše priorita – získali jsme certifikaci ISO 27001

Abychom našim klientům dokázali, že náš systém managementu bezpečnosti informací bereme opravdu vážně, podnikli jsme řadu kroků k tomu, abychom získali certifikaci normy ISO 27001.

Celý článek

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

Přeskočit na hlavní nabídku