Výukový program GraphQL pro začátečníky: Co je, funkce a příklad
⚡ Chytré shrnutí
GraphQL je dotazovací jazyk na straně serveru, který umožňuje klientovi v jediném volání vyžádat si přesně ta data, která potřebuje. Tato stránka vysvětluje jeho klíčové komponenty, dotazy, proměnné, mutace, předplatné a jak se liší od RESTu.

Co je GraphQL?
GraphQL je serverová technologie aplikační vrstvy, kterou vyvinula společnost Facebook, nyní Meta, pro provádění dotazů s existujícími daty. Veřejnosti byla vydána v roce 2015 a řídí se GraphQL. Foundation od roku 2018. GraphQL dokáže optimalizovat volání RESTful API. Nabízí deklarativní způsob načítání a aktualizace dat. GraphQL vám pomáhá načítat data ze serveru do klienta. Umožňuje programátorům zvolit si typy požadavků, které chtějí provádět.
Co se potřebujete naučit, než se naučíte GraphQL?
Tento tutoriál GraphQL je založen na Expresní a NodeJs. Proto se můžete naučit GraphQL velmi snadno se základní znalostí NodeJS.
Proč používat GraphQL?
Níže jsou uvedeny důvody použití GraphQL:
- Poskytuje lidsky čitelný dotaz.
- V GraphQL je velmi snadné pracovat s mnoha databázemi.
- Je vhodný pro mikroslužby a komplexní systémy.
- Data můžete načíst pomocí jediného volání API.
- Pomáhá vám s dávkováním dotazů a ukládáním do mezipaměti.
- Nebudete čelit problémům s nadměrným a nedostatečným načítáním.
- Přizpůsobení požadavků vašim potřebám.
- Pomůže vám objevit schéma ve vhodném formátu.
- GraphQL automaticky udržuje dokumentaci v synchronizaci se změnami API.
- Vývoj API je možný bez verzování.
- Pole GraphQL se používají ve více dotazech, které lze sdílet s vyšší úrovní komponent pro opětovné použití.
- Můžete si vybrat, které funkce chcete zobrazit a jak fungují.
- Lze jej použít pro rychlé prototypování aplikacíping.
Aplikace GraphQL
Zde jsou důležité aplikace GraphQL:
- Poskytuje reléové a další klientské rámce
- GraphQL vám pomůže zlepšit výkon mobilní aplikace.
- Může snížit problém s načítáním, snížit cloudovou službu na straně serveru a snížit využití sítě na straně klienta.
- Lze jej použít, když má klientská aplikace specifikovat, která pole jsou potřeba ve formátu dlouhého dotazu.
- GraphQL lze plně využít, když potřebujete přidat funkce do vašeho starého nebo stávajícího API.
- Používá se, když potřebujete zjednodušit složité API.
- Mix a mash fasádní vzor, který se běžně používá v objektově orientovaném programování.
- Když musíte agregovat data z více než jednoho místa do jednoho pohodlného API.
- GraphQL můžete použít jako posilovač břišních svalůtracna existujícím API pro specifikaci struktury odpovědí na základě potřeb uživatele.
Všechny tyto výhody spočívají na třech pohyblivých částech, které spolupracují.
Klíčové komponenty GraphQL
Nyní v tomto tutoriálu GraphQL se naučíme klíčové komponenty GraphQL:

Jak je znázorněno na obrázku výše, existují tři klíčové komponenty GraphQL: 1) Query, 2) Resolver a 3) Schema.
Dotaz
Dotaz je požadavek API vytvořený aplikací klientského počítače. Podporuje rozšíření a ukazuje na pole. Dotaz se používá ke čtení nebo načítání hodnot.
Části dotazu:
Níže jsou uvedeny důležité části Query
- Pole:
Pole jednoduše označuje, že od serveru žádáme o konkrétní informace. Následuje příklad pole v dotazu GraphQL.
query {
team {
id
name
}
}
Server odpoví dokumentem JSON, jehož tvar odráží dotaz:
{
"data": {
"team": [
{
"id": 1,
"name": "Avengers"
}
]
}
}
Ve výše uvedeném příkladu GraphQL se serveru ptáme na pole s názvem team a jeho podpole, jako je id a name. Server GraphQL vrátí přesně ta data, která jsme požadovali.
- Argumenty
In REST, můžeme předat pouze jednu sadu argumentů jako URL segmenty a parametry dotazu. Pro získání konkrétního profilu bude typické volání REST vypadat takto:
GET /api/team?id=2 Content-Type: application/json { "id": 2, "name": "Justice League" }
vyřešit
Resolvery poskytují pokyny pro převod operace GraphQL na data. Řeší dotaz na data definováním funkcí resolveru.
Zobrazuje serveru proces a také umístění pro načtení dat podle konkrétního pole. Překladač také odděluje schéma databáze a schéma API. Oddělené informace pomáhají upravovat obsah získaný z databáze.
Schéma
Schéma GraphQL je centrem implementace GraphQL. Popisuje funkce dostupné klientům, kteří se k němu připojují.
Vlastnosti GraphQL
Zde jsou důležité funkce GraphQL:
- Poskytuje deklarativní dotazovací jazyk, který není nezbytný.
- Je hierarchický a zaměřený na produkt.
- GraphQL je silně typovaný. To znamená, že dotazy jsou prováděny v kontextu konkrétního systému.
- Dotazy v GraphQL jsou kódovány v klientovi, nikoli na serveru.
- Má všechny vlastnosti aplikační vrstvy modelu OSI.
Klienti GraphQL
Klient GraphQL je kód, který odesílá požadavky POST na příslušný server GraphQL. Můžete se dotazovat přímo na GraphQL API, ale dobrý přístup je využít vyhrazenou klientskou knihovnu pomocí Relay.
Toto JavaKnihovnu skriptů vyvinul Facebook pro vytváření aplikací React s GraphQL. Klienti GraphQL mohou být CMS jako Drupal, aplikace s jednou stránkou, mobilní aplikace atd.
Servery GraphQL
Servery GraphQL jsou implementace specifikace GraphQL na straně serveru. Zobrazují vaše data jako GraphQL API, na které může váš klientský program zasílat dotazy. databáze.
Brány GraphQL
Gateway je mikroslužební vzor, kde si můžete vytvořit samostatnou službu pro práci s dalšími backendovými službami. Nabízí funkční dokumentaci a poskytuje pohodlný způsob, jak shromažďovat data z více než jednoho zdroje pomocí jediného požadavku.
Co je proměnná v GraphQL?
A Proměnná v GraphQL se používá k oddělení dynamických hodnot od dotazu klienta a předání dotazu jako jedinečného slovníku. Proměnnou v GraphQL lze také použít pro opětovné použití dotazu nebo mutací zapsaných klientem s jednotlivými argumenty. V graphQL nemůžete předávat dynamické argumenty přímo v řetězci dotazu. Důvodem je, že kód na straně klienta potřebuje dynamicky manipulovat s řetězcem dotazu v době, kdy spouštíte program.
GraphQL má jeden dobrý způsob, jak faktorizovat dynamické hodnoty z dotazu. Předává je jako samostatný slovník. Tyto hodnoty se nazývají proměnné. Kdykoli pracujeme s proměnnými, musíme udělat následující tři věci:
- Nahraďte statickou hodnotu v dotazu názvem proměnné.
- Deklarujte název proměnné jako jednu z proměnných, které jsou přijímány dotazem GraphQL.
- Předejte hodnotu v transportně specifickém slovníku proměnných.
Zde je ukázka, jak to celé vypadá. Nejprve dotaz, který deklaruje proměnnou:
query HeroNameAndFriends($episode: Episode) { hero(episode: $episode) { name friends { name } } }
Pak se spolu s ním odešle samostatný slovník hodnot proměnných:
{
"episode": "JEDI"
}
A odpověď vrácená serverem:
{
"data": {
"hero": {
"name": "R2-D2",
"friends": [
{ "name": "Luke Skywalker" },
{ "name": "Han Solo" },
{ "name": "Leia Organa" }
]
}
}
}
Jak můžete vidět ve výše uvedeném příkladu GraphQL, jednoduše jsme předali jinou proměnnou, než je potřeba vytvořit nový dotaz.
Co je mutace?
Mutace je způsob, jak změnit datovou sadu v GraphQL. Upravuje data v datovém úložišti a vrací hodnotu. Mutace vám pomohou vkládat, aktualizovat nebo mazat data. Obecně jsou mutace definovány jako část schématu.
Body, které je třeba vzít v úvahu při navrhování mutací GraphQL
Zde jsou důležité body při navrhování GraphQL:
- Pojmenování: Nejprve musíte pojmenovat své mutační sloveso. Potom podstatné jméno, případně „objekt“. Při pojmenovávání mutací použijte camelCase.
- Specifičnost: Musíte se co nejvíce zaměřit na mutaci. Mutace by měly představovat sémantické akce provedené uživatelem.
- Vstupní objekt: Použijte jeden, jedinečný, povinný, vstupní typ objektu jako argument pro provedení mutace na klientovi.
- Jedinečný typ užitečného zatížení: Pro každou mutaci byste měli použít jedinečný typ užitečného zatížení. Můžete také přidat výstup mutace jako pole k tomuto konkrétnímu typu užitečného zatížení.
- Vnoření: Použijte vnoření do své mutace, kdekoli to dává smysl. Umožňuje vám plně využívat GraphQL API.
Dotazy čtou a mutují a zapisují. Třetí typ operace zahrnuje data, která se mění, zatímco je klient stále připojen.
Co je to předplatné v GraphQL?
A předplatné je třetí typ operace ve specifikaci GraphQL, vedle dotazu a mutace. Dotaz a mutace se dokončí v jednom požadavku a odpovědi. Předplatné místo toho udržuje dlouhodobé připojení otevřené, obvykle přes WebSockety, takže server odešle klientovi nový výsledek pokaždé, když dojde k zadané události.
Syntaxe zrcadlí dotaz, kde klíčové slovo subscription nahrazuje query:
subscription OnCommentAdded($postId: ID!) { commentAdded(postId: $postId) { id content author { name } } }
V praxi se předplatné odlišuje třemi body.
- Řízeno událostmi, ne dotazováno: Klient zaregistruje zájem jednou. Nic dalšího se neodesílá, dokud server nezveřejní odpovídající událost, což je mnohem levnější než opakované dotazování.
- Jedno kořenové pole na předplatné: Specifikace povoluje pouze jedno pole nejvyšší úrovně, na rozdíl od dotazu, který může požadovat několik najednou.
- Nejlépe uchovávat v malém množství: Odesílejte pouze pole, která je nutné pro obnovení rozhraní. Typickým využitím je živý chat, oznámení a cenové lišty.
Rozdíl mezi GraphQL a REST
Následující tabulka ukazuje důležitý rozdíl mezi GraphQL a REST.
| GraphQL | REST |
|---|---|
| Řídí se architekturou řízenou klienty. | Sleduje architekturu řízenou serverem. |
| GraphQL lze organizovat pomocí schématu. | REST lze organizovat z hlediska koncových bodů. |
| GraphQL je rostoucí komunita. | REST je velmi velká komunita. |
| Rychlost vývoje v GraphQL je vysoká. | Rychlost vývoje v REST je pomalá. |
| Křivka učení v GraphQL je strmá. | Křivka učení v REST je střední. |
| Identita je oddělena od toho, jak ji získáte. | Koncový bod, který voláte v REST, je identita konkrétního objektu. |
| V GraphQL klient určuje, která pole přijímá. | Tvar a velikost prostředku určuje server v REST. |
| GraphQL poskytuje vysokou konzistenci napříč všemi platformami. | Je těžké dosáhnout konzistence napříč všemi platformami. |
Nevýhody GraphQL
Zde jsou nevýhody GraphQL:
- Mladý ekosystém
- Nedostatek zdrojů na backendové části.
- Chybí návrhový vzor pro složitou aplikaci.
- Problémy s výkonem u složitých dotazů.
- Overkill pro malé aplikace
- GraphQL nezávisí na metodách ukládání do mezipaměti HTTP, které umožňují ukládání obsahu požadavku.
- GraphQL nerozumí souborům. Proto v něm není zahrnuta funkce nahrávání souborů.
- S GraphQL buďte připraveni absolvovat mnoho předvývojového vzdělávání, jako je výuka Schema Definition Language.
Open Source aplikace a nástroje používané GraphQL
Důležité open source aplikace a nástroje používané GraphQL jsou následující:
- gatsbyGatsby je aplikace založená na GraphQL, která dokáže používat data odvozená z více než jednoho zdroje GraphQL API. Můžete ji použít k vývoji statických a klientských React aplikací.
- GraphiQL: Jedná se o IDE, které se integruje s prohlížečem a také interaguje s API GraphQL. Mezi funkce, které GraphiQL zahrnuje, patří mutace, dotazování dat a automatické doplňování dotazů.
- Hřiště GraphQL: Jedná se o výkonné IDE s vestavěným editorem pro zpracování mutací, validací, dotazů GraphQl, odběrů atd. Vývojář může toto IDE použít k vizualizaci struktury schématu. Projekt je nyní ukončen a jeho funkce byly vráceny zpět do GraphiQL.
- Prisma: Prisma je databáze abstracvrstva evidence, nyní dodávaná jako typově bezpečný ORM, která je široce spárována se serverem GraphQL pro zpřístupnění operací CRUD (vytváření, čtení, aktualizace a mazání).
- Bit: Jedná se o open-source nástroj a platformu, která převádí opakovaně použitelný kód na komponenty. Vývojáři je mohou používat ke sdílení a vývoji různých projektů.
