Výukový program GraphQL pro začátečníky: Co je, funkce a příklad

Co je GraphQL?

GraphQL je technologie aplikační vrstvy na straně serveru, kterou vyvinul Facebook pro provádění dotazů se stávajícími daty. GraphQL dokáže optimalizovat volání RESTful API. Poskytuje deklarativní způsob načítání a aktualizace vašich dat. GraphQL vám pomůže načíst data ze serveru na klienta. Umožňuje programátorům vybrat si typy požadavků, které chtějí dělat.

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.
  • Nesetkáte se s problémy, nad a pod přitahování.
  • 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í.
  • Může být použit pro rychlé prototypování aplikací.

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 abstrakci na existujícím rozhraní API k určení struktury odpovědi na základě potřeb uživatele.

Co se musíte naučit, než se naučíte GraphQl?

Tento tutoriál GraphQL je založen na Expresní si NodeJs. Proto se můžete naučit GraphQL velmi snadno se základní znalostí NodeJS.

Klíčové komponenty GraphQL

Nyní v tomto tutoriálu GraphQL se naučíme klíčové komponenty GraphQL:

Klíčové komponenty GraphQL
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

  1. Pole:

Pole jednoduše označuje, že žádáme server o konkrétní informace. Následuje příklad GraphQL pole v dotazu graphQL.

query {
    team {
        id name
    }
}

"data": {
    "team":[ {
        "id": 1, 
        "name": "Avengers"
    }
    ,
    …
]
}
}

Ve výše uvedeném příkladu GraphQL požádáme server o pole s názvem tým a jeho podpole, jako je id a name. Server GraphQL vrací data, která jsme požadovali.

  1. Argumenty

In REST, můžeme jako segmenty URL a parametry dotazu předat pouze jednu sadu argumentů. Chcete-li získat konkrétní profil, 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.

Tento 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 implementací specifikace GraphQL na straně serveru. Zobrazuje vaše data jako GraphQL API, na které se může váš klientský program dotazovat databáze.

Brány GraphQL

Brána je vzor mikroslužeb, kde můžete vytvořit samostatnou službu, která si poradí s ostatními backendovými službami. Nabízí funkční dokumentaci a poskytuje pohodlný způsob shromažďování dat 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 jsou známé jako proměnné. Kdykoli pracujeme s proměnnými, musíme udělat následující tři věci:

  1. Nahraďte statickou hodnotu v dotazu názvem proměnné.
  2. Deklarujte název proměnné jako jednu z proměnných, které jsou přijímány dotazem GraphQL.
  3. Předejte hodnotu v transportně specifickém slovníku proměnných.

Jak to vypadá dohromady:

query HeroNameAndFriends($episode: Episode) {
  hero(episode: $episode) {
    name
    friends {
      name
    }
  }
}
{
  "episode": "JEDI"
}
{
  "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.

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 obtížná. 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 server určuje dostupné prostředky. 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í:

  • gatsby: Gastby je aplikace založená na GraphQL, která může používat data odvozená z více než jednoho zdroje GraphQL API. Můžete jej použít k vývoji statické a klientské aplikace React.
  • GraphiQL: Je to ID, které se integruje s prohlížečem a také spolupracuje s API GraphQL. Některé z funkcí, které GraphiQL obsahuje, jsou mutace, dotazování na data a automatické doplňování dotazů.
  • Hřiště GraphQL: Je to výkonné IDE, které má vestavěný editor pro zpracování mutací, ověřování, dotazy GraphQl, předplatné atd. Vývojář může toto IDE použít k vizualizaci struktury schématu.
  • Prisma: Prisma je databázová abstraktní vrstva, která přemění vaše databáze na GraphQL API s operacemi CRUD (Create, Read, Update and Delete).
  • 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ů.

Shrnutí

  • GraphQL je technologie aplikační vrstvy na straně serveru, kterou vyvinul Facebook pro provádění dotazů s existujícími daty.
  • GraphQL můžete použít k načtení dat pomocí jediného volání API.
  • GraphQL vám pomůže zlepšit výkon mobilní aplikace.
  • Důležité komponenty dotazu GraphQL jsou: 1) Query, 2) Resolver, 3) Schema.
  • GraphQL je silně typovaný. To znamená, že dotazy jsou prováděny v kontextu konkrétního systému.
  • Klient GraphQL je kód, který odesílá požadavky POST na příslušný server GraphQL.
  • Servery GraphQL jsou implementací specifikace GraphQL na straně serveru.
  • Brána je vzor mikroslužeb, kde můžete vytvořit samostatnou službu, která si poradí s ostatními backendovými službami.
  • GraphQL má jeden dobrý způsob, jak faktorizovat dynamické hodnoty z dotazu.
  • Mutace je způsob, jak změnit datovou sadu v GraphQL.
  • Důležité body při navrhování GraphQL jsou: 1) Pojmenování, 2) Specifičnost, 3) Vstupní objekt Jedinečný typ užitečného zatížení a 4) Vnoření.
  • GraphQL lze organizovat z hlediska schématu, zatímco REST lze organizovat z hlediska koncových bodů.
  • Nevýhodou GraphQL je nedostatek zdrojů na backendové části.