RESOURCES

Waarvoor wordt GraphQL gebruikt?

.

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

01Een nieuwe zoektaal

GraphQL is een querytaal voor API's die is ontwikkeld door Facebook en hun dev-gemeenschap. Het ging in juni 2018 in première, en is nu een volwassen technologie die op grote schaal erkenning in de markt heeft gekregen. Daardoor wordt het goed herkend en kiezen veel bedrijven ervoor om het te implementeren. Om u 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 u 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 u wilde

In feite zal het aantal van dergelijke adressen nooit klein zijn, integendeel, het zal meegroeien met het systeem. Houd er rekening mee dat u voor bijna elk adres een reeks oproepen moet creëren om get-, post-, put- of delete-verzoeken af te handelen. Dit resulteert in een groot aantal te onderhouden adressen en een nog groter aantal oproepen die nodig zijn om de gegevens te verkrijgen. GraphQL werkt op een heel andere manier. Wij hebben slechts één adres, één enkele bron van waarheid, waar wij gegevens kunnen opvragen. Wat we krijgen hangt uitsluitend af van ons en hoe we de query samenstellen.

GraphQL-query's

03Flexibele vragen

Het belangrijkste kenmerk van GraphQL is de mogelijkheid om flexibele query's uit te voeren, waarbij we precies definiëren welke gegevens we uit de API willen halen. Bovendien 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 creëren, wijzigen of verwijderen
  • schema: de basis van elk GraphQL project, het beschrijft de logica en functionaliteiten, is geschreven in SDL (Schema Definition Language) en de belangrijkste componenten zijn types en velden resolver: de functie die wordt gebruikt om uw GraphQL schema te verbinden met de backend, het zet operaties om in gegevens en kan strings, gehele getallen, null en andere primitieven terugsturen.
  • resolver: resolver: de functie die gebruikt wordt om uw GraphQL schema te verbinden met de backend, het zet operaties om in gegevens en kan strings, gehele getallen, null en andere primitieven terugsturen.
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 zijn types 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 niet zo populair is als REST, groeit de gemeenschap ervan 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 te weinig ophalen: GraphQL gebruikt flexibele of zelfs geneste query's die ervoor zorgen dat u precies en alleen krijgt wat u nodig hebt. Geen meerdere aanroepen nodig en geen overtollige gegevens ontvangen, alles kan worden afgehandeld door één specifiek geconstrueerde query.
  • Eén eindpuntOp dezelfde manier hoeft u maar één eindpunt te hebben. De querystructuur zorgt ervoor dat u krijgt wat u nodig hebt, hoe u de gegevens hebt georganiseerd is irrelevant, zolang u de query correct opbouwt, krijgt u alles wat u nodig hebt, zelfs uit een complete puinhoop.
  • Type-safetyGraphQL schema's gebruiken een sterk type systeem, dit betekent dat alle API's die aan de klant worden blootgesteld in de Schema Definition Language zijn geschreven, wat inconsistenties in de gegevens elimineert en het vinden van fouten veel gemakkelijker 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 round-trips: Vanwege de hiërarchische structuur heeft een REST API meestal een aantal eindpunten en op zijn beurt heeft de client meerdere aanroepen nodig om alle benodigde gegevens te verkrijgen.
  • 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 keren moeten worden aangeroepen om alle benodigde gegevens te verkrijgen. Dit heeft uiteraard gevolgen voor zowel de bandbreedte als de prestaties en wordt meestal verergerd naarmate de toepassing groter is.
LeftCircle

Waarom GraphQL gebruiken?

Voor de prestaties is het voordeel van GraphQL duidelijk, omdat slechts één enkel eindpunt nodig is om alle bronnen te leveren. Uiteraard kunnen query's behoorlijk complex worden, afhankelijk van de gegevens die u nodig hebt. Toch is het onderhouden van één complexe query nog altijd een stuk eenvoudiger dan het hebben van een groot aantal eindpunten en het nodig hebben van een nog groter aantal eenvoudige query's om alle gegevens die u nodig hebt daadwerkelijk van hen te krijgen. Voor een complexe app met microservices is GraphQL gewoon beter dan REST. Voor een eenvoudige applicatie is het gebruik van REST nog steeds prima, maar als die app ooit groter wordt, krijgt hij te maken met dezelfde problemen die hierboven zijn genoemd, en herstructurering om die te vermijden zal veel moeite kosten.

Een demo aanvragen

Ervaar een live aangepaste demo en ontdek waarom GraphQL Editor de juiste keuze is om afscheid te nemen van het handmatige!

Aan de slag