English

Polski

Français

Deutsch

日本

Español

Dansk

Inloggen in GraphQL EditorAan de slag
RESOURCES

Waar wordt GraphQL voor gebruikt?

GraphQL is een manier van communiceren met API's die is gemaakt als alternatief voor REST.

01Een nieuwe querytaal

GraphQL is een querytaal voor API's die is ontwikkeld door Facebook en hun ontwikkelaarsgemeenschap. Het ging in juni 2018 in première en is nu een volwassen technologie die wijdverspreide erkenning in de markt heeft gekregen. Daardoor wordt het goed herkend en kiezen veel bedrijven ervoor om het te implementeren. Om je te vertellen hoe het anders is, moeten we kijken naar wat nog steeds het meest gebruikt wordt: REST en waar het op gebaseerd is. GraphQL wordt vaak de opvolger van REST genoemd omdat het de belangrijkste problemen ervan oplost. Zoals je waarschijnlijk weet, is het gebaseerd op een soort oud systeemontwerp. Volgens dit model is elk gegevensmodel beschikbaar op een apart adres. Bij een online winkel met kleding kunnen we bijvoorbeeld adressen hebben voor winkelwagen, magazijn, producten en nog veel meer.

GraphQL-querytaal

02Krijg alleen wat je wilde

In feite zal het aantal van zulke adressen nooit klein zijn, integendeel, het zal meegroeien met het systeem. Houd in gedachten dat je voor bijna elk adres een set aanroepen moet maken om get, post, put of delete verzoeken af te handelen. Dit resulteert in een groot aantal adressen om te onderhouden en een nog groter aantal oproepen die nodig zijn om de gegevens te krijgen. GraphQL werkt op een heel andere manier. We hebben maar één adres, één bron van waarheid, waar we gegevens kunnen opvragen. Wat we krijgen hangt alleen van ons af en hoe we de query samenstellen.

GraphQL-query's

03Flexibele zoekopdrachten

Het belangrijkste kenmerk van GraphQL is de mogelijkheid om flexibele queries uit te voeren waarin we precies definiëren welke gegevens we uit de API willen halen. Daarnaast biedt de taal de mogelijkheid om geneste queries te maken, waardoor het op deze gebieden nog meer voordeel heeft ten opzichte van REST API's.

GraphQL-query's

04Platform agnostisch

Een punt van overeenkomst tussen REST en GraphQL is platform- of programmeertaalonafhankelijkheid. Een ander gemeenschappelijk kenmerk is de idempotentie van dezelfde operaties. Voor zowel de REST architectuur als GraphQL geldt dat bewerkingen zoals ophalen, wijzigen of verwijderen herhaaldelijk kunnen worden gebruikt zonder dat het resultaat verandert.

REST vs GraphQL

05Basiselementen

De basiselementen van GraphQL zijn: mutatie:

  • query: een basis fetch operatie in GraphQL waarmee we gegevens kunnen ophalen. het belangrijkste verschil is dat we precies de gegevens krijgen die we hebben opgevraagd door de query zo te structureren dat we alleen krijgen wat we willen.
  • mutatie: een basisbewerking voor gegevensmanipulatie in GraphQL waarmee we gegevens kunnen maken, wijzigen of verwijderen
  • schema: de basis van elk GraphQL project, het beschrijft de logica en functionaliteiten, wordt geschreven in SDL (Schema Definition Language) en de belangrijkste onderdelen zijn types en fields resolver: de functie die wordt gebruikt om je GraphQL schema te verbinden met de backend, het zet bewerkingen om in gegevens en kan strings, gehele getallen, null en andere primitieven retourneren
  • resolver: resolver: de functie die wordt gebruikt om je GraphQL schema te verbinden met de backend, het zet bewerkingen om in gegevens en kan strings, gehele getallen, null en andere primitieven retourneren
GraphQL Mutaties

06Schema Definitie Taal

GraphQL gebruikt zijn eigen syntaxis: SDL of Schema Definition Language. Deze wordt gebruikt om het schema van een API en de bijbehorende typen en velden te specificeren. Types worden gedeclareerd met het type sleutelwoord en velden worden toegevoegd tussen haakjes voor elk objecttype.

GraphQL Schema's

07Groeiende gemeenschap

Hoewel GraphQL nog steeds niet zo populair is als REST, groeit de community snel. Het heeft al een aantal grote gebruikers zoals GitHub, Netflix, PayPal of Shopify. Het is slechts een kwestie van tijd voordat er meer zullen volgen.

GraphQL Gemeenschap

GraphQL

  • Geen over- of underfetching: GraphQL gebruikt flexibele of zelfs geneste query's die ervoor zorgen dat je precies en alleen krijgt wat je nodig hebt. Er zijn geen meerdere aanroepen nodig en er worden geen overtollige gegevens ontvangen, alles kan worden afgehandeld door één specifiek geconstrueerde query.
  • Enkel eindpuntOp dezelfde manier heb je maar één eindpunt nodig. De structuur van de query zorgt ervoor dat je krijgt wat je nodig hebt, hoe je de gegevens hebt georganiseerd is irrelevant, zolang je de query op de juiste manier opbouwt, krijg je alles wat je nodig hebt, zelfs uit een complete puinhoop.
  • TypeveiligheidGraphQL schema's gebruiken een sterk type systeem, dit betekent dat alle API's die aan de client worden blootgesteld in de Schema Definition Language zijn geschreven, wat inconsistenties in gegevens elimineert en het vinden van fouten veel eenvoudiger maakt.

REST

  • Hiërarchie: REST API's gebruiken Uniform Resource Identifiers of URI's om bronnen aan te spreken. Dit betekent dat alles een eenvoudige hiërarchische benadering volgt, wat prima is voor kleine projecten, maar veel problemen kan opleveren voor grotere of complexere projecten.
  • Meerdere rondes: Vanwege de hiërarchische structuur heeft een REST API meestal een aantal eindpunten en heeft de client op zijn beurt meerdere aanroepen nodig om alle benodigde gegevens te krijgen.
  • Over- en under-fetching: De hiërarchische structuur en het gebrek aan flexibele queries betekent dat REST API's meestal ofwel te veel onnodige gegevens ophalen ofwel meerdere aanroepen nodig hebben om alle benodigde gegevens te krijgen. Dit heeft uiteraard gevolgen voor zowel de bandbreedte als de prestaties en wordt meestal verergerd naarmate de applicatie groter is.

Klaar om op te stijgen?

Verbeter je werk met onze editor die een visuele grafiek van wereldklasse, documentatie en API-console combineert

Aan de slag met GraphQL Editor