English

Polski

Français

Deutsch

日本

Español

Nederlands

Log ind på GraphQL Editor
RESSOURCER

Hvad bruges GraphQL til?

GraphQL er en måde at kommunikere med API'er på, der er skabt som et alternativ til REST.

01Et nyt forespørgselssprog

GraphQL er et forespørgselssprog til API'er, der blev udviklet af Facebook og deres udviklerfællesskab. Det havde premiere i juni 2018 og er nu en moden teknologi, der har vundet bred anerkendelse på markedet. Som et resultat er det velkendt, og mange virksomheder vælger at implementere det. For at fortælle dig, hvordan det er anderledes, er vi nødt til at se på, hvad der stadig er mest udbredt: REST, og hvad det er baseret på. GraphQL bliver ofte kaldt efterfølgeren til REST, fordi det løser de vigtigste problemer. Som du sikkert ved, er det baseret på en slags gammelt systemdesign. Ifølge det er hver datamodel tilgængelig på en separat adresse. Hvis vi f.eks. har en onlinebutik med tøj, kan vi have adresser til indkøbskurv, lager, produkter og mange flere.

GraphQL-forespørgselssprog

02Få kun det, du ønskede dig

Faktisk vil antallet af sådanne adresser aldrig være lille, tværtimod vil det vokse med systemet. Husk på, at du for næsten hver adresse skal oprette et sæt kald til at håndtere get-, post-, put- eller delete-anmodninger. Det vil resultere i et stort antal adresser, der skal vedligeholdes, og en endnu større mængde kald, der er nødvendige for at få dataene. GraphQL fungerer på en helt anden måde. Vi har kun én adresse, en enkelt kilde til sandhed, hvorfra vi kan anmode om data. Hvad vi får, afhænger udelukkende af os, og hvordan vi konstruerer forespørgslen.

GraphQL-forespørgsler

03Fleksible forespørgsler

Nøglefunktionen i GraphQL er evnen til at udføre fleksible forespørgsler, hvor vi definerer præcis, hvilke data fra API'et vi ønsker at få. Derudover giver sproget mulighed for at oprette indlejrede forespørgsler, hvilket gør det endnu mere fordelagtigt i forhold til REST API'er på disse områder.

GraphQL-forespørgsler

04Platform agnostisk

Et lighedspunkt mellem REST og GraphQL er uafhængighed af platform eller programmeringssprog. Et andet fællestræk er, at de samme operationer kan gentages. For både REST-arkitekturen og GraphQL gælder det, at operationer som retrieve, modify eller delete kan bruges gentagne gange uden at ændre resultatet.

REST vs GraphQL

05Grundlæggende elementer

De grundlæggende elementer i GraphQL er: mutation:

  • query: en grundlæggende hentningsoperation i GraphQL, som lader os hente data. Den vigtigste forskel er, at vi får præcis de data, vi har bedt om, ved at strukturere forespørgslen, så vi kun får det, vi ønsker.
  • mutation: en grundlæggende datamanipulationsoperation i GraphQL, som lader os oprette, ændre eller slette data
  • schema: grundlaget for ethvert GraphQL-projekt, det beskriver logikken og funktionaliteten, er skrevet i SDL (Schema Definition Language), og dets hovedkomponenter er typer og felter resolver: den funktion, der bruges til at forbinde dit GraphQL-skema til backend, den omdanner operationer til data og kan returnere strenge, heltal, null og andre primitiver
  • resolver: resolver: funktionen, der bruges til at forbinde dit GraphQL-skema til backend, den omdanner operationer til data og kan returnere strenge, heltal, null og andre primitiver
GraphQL-mutationer

06Sprog til definition af skemaer

GraphQL bruger sin egen syntaks: SDL eller Schema Definition Language. Det bruges til at specificere skemaet for en API og dens typer og felter. Typer erklæres ved hjælp af nøgleordet type, og felter tilføjes i parentes for hver objekttype.

GraphQL-skemaer

07Voksende fællesskab

Selvom GraphQL stadig ikke er så populært som REST, vokser dets community hurtigt. Det har allerede haft en række store adoptere som GitHub, Netflix, PayPal eller Shopify. Det er kun et spørgsmål om tid, før flere vil følge efter.

GraphQL-fællesskabet

GraphQL

  • Ingen over- eller underhentning: GraphQL bruger fleksible eller endda indlejrede forespørgsler, som sikrer, at du får præcis og kun det, du har brug for. Der er ikke behov for flere kald og ingen overskydende data, alt kan håndteres af én specifikt konstrueret forespørgsel.
  • Enkelt endepunktPå samme måde behøver du kun at have et enkelt endepunkt. Forespørgselsstrukturen vil håndtere at få det, du har brug for, hvordan du har organiseret dataene er irrelevant, så længe du konstruerer forespørgslen korrekt, vil den få alt, hvad du har brug for, selv fra et komplet rod.
  • Type-sikkerhedGraphQL-skemaer bruger et stærkt typesystem, hvilket betyder, at alle API'er, der eksponeres for klienten, er skrevet i Schema Definition Language, hvilket eliminerer datainkonsistens og gør det meget nemmere at finde fejl.

REST

  • Hierarki: REST API'er bruger Uniform Resource Identifiers eller URI'er til at adressere ressourcer. Det betyder, at alt følger en simpel hierarkisk tilgang, hvilket er fint til små projekter, men kan skabe en masse problemer for større eller mere komplekse projekter.
  • Flere rundrejser: På grund af den hierarkiske struktur har en REST API normalt en række slutpunkter, og klienten har derfor brug for flere opkald for at få alle de nødvendige data.
  • Over- og underhentning: Den hierarkiske struktur og manglen på fleksible forespørgsler betyder, at REST API'er normalt henter enten for mange unødvendige data eller har brug for flere kald for at få alle de nødvendige data. Det påvirker naturligvis både båndbredde og ydeevne, og det bliver som regel værre, jo større applikationen er.

Klar til take-off?

Løft dit arbejde med vores editor, der kombinerer visuel graf, dokumentation og API-konsol i verdensklasse.

Kom godt i gang med GraphQL Editor