• Portretfoto van Maarten Kling
    Maarten Kling

GraphQL vs RESTful API’s in de praktijk

Het kunnen uitwisselen van informatie tussen verschillende systemen is een essentieel onderdeel van moderne software. Het zijn API’s (application programming interfaces) die deze informatie-uitwisseling mogelijk maken. Maar ook de wereld van API’s staat niet stil. Waar de eerste API’s in de jaren 60 werden ontwikkeld om verschillende hardware componenten met elkaar te laten communiceren, werd de technologie al snel ingezet om ook verschillende besturingssystemen en programmeertalen met elkaar te laten communiceren.

Met de uitvinding van RESTful API’s in het begin van de 21e eeuw, kwam er een gestandaardiseerde manier om API’s te ontwikkelen en gebruiken. Dit heeft geleid tot een explosie in API toepassingen, waarbij applicaties en besturingssystemen steeds beter zijn geworden in het uitwisselen van informatie. Dit tot groot genoegen van de gebruikers, want de naadloze integratie van verschillende applicaties heeft een enorme efficiëntieslag op allerlei gebieden teweeggebracht.

In 2012 ontwikkelde Facebook een nieuwe API vorm: GraphQL. Deze API vorm werd uiteindelijk in 2015 als open-source software uitgebracht, wat ontwikkelaars over de hele wereld de mogelijkheid gaf dit in hun software te verwerken.

Maar wat is GraphQL precies? Hoe verschilt het van de RESTful API vorm? Wanneer gebruik je GraphQL? En wat is onze ervaring met deze API vorm? In deze blog gaan we in gesprek met onze collega Kees, die je antwoorden geeft op al deze vragen. Let’s dive in!

Wat is GraphQL?

Bij zowel GraphQL als RESTful API’s is er een gegevensuitwisseling tussen verschillende systemen, waarbij er bepaald moet worden welke gegevens exact gevraagd worden. Het verschil is dat GraphQL een veel grotere mate van flexibiliteit biedt dan een RESTful API. Kees vertelt:

“Bij GraphQL kun je zelf ingeven wat je allemaal terug krijgt aan uitvoer, terwijl de data die je terug krijgt bij een RESTful API van tevoren is vastgesteld.”

Laten we Facebook als voorbeeld nemen. Een Facebook gebruiker wil niet bij het openen van het account van één van zijn vrienden alle data zien die bij deze persoon hoort. Dit is niet alleen veel te omvangrijk om in een keer tot je te nemen, het vertraagt ook nog eens de laadtijd van de pagina omdat er zoveel data moet worden geladen. Om dit te voorkomen zet Facebook GraphQL in. Hierdoor krijgt de gebruiker alleen te zien wat er in GraphQL als uitvoer gevraagd wordt. En dit is eindeloos flexibel. GraphQL is daarmee uitermate geschikt voor het uitwisselen van gegevens waarbij de uitvoer continu verandert.

RESTful vs GraphQL: De voordelen en nadelen op een rij

Ondanks de hoge mate van flexibiliteit van GraphQL gebruiken we het bij Four Digits niet vaak. GraphQL heeft namelijk ook een aantal nadelen ten opzichte van RESTful API’s. We zetten ze op een rij:

1. GraphQL is complexer

Binnen Four Digits proberen we onze software zo simpel mogelijk te houden. Wij ontwikkelen vaak software waarbij de data uit één samengestelde bron komt en niet afhankelijk is van allerlei andere datapunten. Het toepassen van GraphQL is in deze opzet onnodig complex, wat leidt tot een grotere tijdsinvestering en dus meer kosten. Zonder dat het de gebruiker voordelen oplevert. Kees vertelt:

“Bij bijvoorbeeld een order management systeem wil je als je inlogt de laatste 10 orders te zien krijgen. Je wil niet per se de bedrijven ophalen die bij de orders ophalen. Bij de meeste applicaties die we bouwen bepalen we samen met onze klant wat iemand te zien moet krijgen. Deze gevraagde uitvoer verdelen we vervolgens per gebruikersgroep, zodat iedere gebruiker exact te zien krijgt wat voor hem of haar relevant is.”

2. GraphQL wordt minder goed onderhouden

Bij Four Digits gebruiken we Django om applicaties te ontwikkelen. In de open-source library van Django wordt GraphQL niet goed onderhouden, waardoor we de support voor onze klanten minder goed kunnen garanderen. Iets waar we veel belang aan hechten voor onze klanten, vooral op de lange termijn.

3. GraphQL vergt een grotere tijdsinvestering

Door de complexiteit van GraphQL ten opzichte van RESTful, kost het ons meer tijd om GraphQL toe te passen. Uiteindelijk leidt dit tot meer kosten voor onze klant. Tegelijkertijd komt dit ook omdat onze ervaring met GraphQL beperkter is, simpelweg omdat het minder past bij het landschap waarin wij opereren.

Naast deze nadelen biedt GraphQL in bepaalde gevallen wel degelijk voordelen. Vooral als er vanuit de klant behoefte is aan een grote flexibiliteit in het opvragen van gegevens is GraphQL simpelweg veel effectiever dan een RESTful API. Kees deelt nog een voordeel:

Een ander voordeel van GraphQL is dat je de front-end kan aanpassen zonder dat je de back-end gelijk hoeft aan te passen. Bij het aanpassen van een RESTful API is er wél een back-end aanpassing nodig. GraphQL is daarom vooral handig bij apps waarbij veel veranderd wordt in de front-end. Of voor klanten die de complete back-end uitbesteden, maar zelf de front-end op zich nemen.”

De keuze tussen GraphQL en RESTful

Als gebruiker merk je weinig verschil tussen deze twee verschillende API vormen. Daarom houden we de keuze bij Four Digits simpel. Voldoet een RESTful API om alle benodigde uitvoer te genereren? Dan kiezen we hiervoor. Vraagt jouw specifieke wens om een flexibele uitvoer, waarbij een RESTful API te beperkt is? Dan zetten we GraphQL in.

Weet je zelf niet wat de beste oplossing is voor jouw organisatie? Vraag een gratis adviesgesprek aan.

We love code