Wat is GraphQL? Uitleg en verschil met REST

Home Woordenlijst Wat is GraphQL? Uitleg en verschil met REST

GraphQL is een querytaal en runtime voor API's. In plaats van verschillende vaste endpoints aan te roepen, stuurt de client één query naar één endpoint en beschrijft precies welke gegevens hij wil, inclusief gerelateerde gegevens, en krijgt precies dat terug. GraphQL is in 2012 ontwikkeld bij Facebook, in 2015 open source gemaakt en wordt nu beheerd door de GraphQL Foundation. GitHub en Shopify zijn bekende platforms met een GraphQL API.

Hoe werkt GraphQL?

  • Schema: de server legt in een sterk getypeerd schema alle beschikbare types, velden en relaties vast. Dat schema is meteen de documentatie.
  • Queries: de client vraagt specifieke velden op, bijvoorbeeld een klant met alleen de naam en de laatste vijf orders, in één verzoek.
  • Mutations: bewerkingen die gegevens aanmaken, wijzigen of verwijderen.
  • Subscriptions: realtime updates die naar de client worden gestuurd, meestal via een WebSocket.
  • Resolvers: functies op de server die per veld de gegevens ophalen, uit een database, een andere API of een microservice.

GraphQL of REST?

Bij REST bepaalt de server wat elk endpoint teruggeeft. Dat betekent vaak over-fetching (meer gegevens ontvangen dan nodig) of under-fetching (meerdere verzoeken nodig om alles te verzamelen). GraphQL lost beide op: één verzoek, precies de juiste velden. Dat is vooral handig voor apps en front-ends met veel verschillende schermen, en voor API's die door veel verschillende clients worden gebruikt.

REST blijft eenvoudiger voor rechttoe-rechtaan API's, werkt vanzelf goed met HTTP-caching en is bij elke ontwikkelaar bekend. GraphQL maakt caching, rate limiting en prestaties lastiger: één complexe query kan de server zwaar belasten, en naïeve resolvers veroorzaken het "N+1-probleem" van veel kleine databasequery's. GraphQL API's in productie hebben daarom limieten op querydiepte en -complexiteit nodig, batching (bijvoorbeeld met DataLoader) en goede monitoring.

Wanneer kiest u voor GraphQL?

GraphQL past wanneer meerdere clients (web, mobiel, partners) verschillende weergaven van dezelfde gegevens nodig hebben, wanneer het datamodel veel relaties heeft, of wanneer u meerdere back-end services achter één API samenbrengt. Voor een eenvoudige koppeling tussen twee systemen is REST meestal praktischer. Bij koppelingen gebruiken we ook vaak GraphQL API's van anderen; de Admin API van Shopify is bijvoorbeeld GraphQL-first. Zie onze GraphQL ontwikkeling, API ontwikkeling op maat en Shopify koppeling.

Veelgestelde vragen over GraphQL

Is GraphQL een database?

Nee. GraphQL is een querytaal voor API's. Achter een GraphQL API kan elke database zitten, andere API's of een combinatie van services.

Vervangt GraphQL REST?

Niet per se. Veel organisaties gebruiken beide: REST voor eenvoudige koppelingen en webhooks, GraphQL voor flexibele toegang tot gegevens vanuit front-ends. Ze lossen deels verschillende problemen op.

Is GraphQL sneller dan REST?

Dat kan, omdat er minder verzoeken en minder gegevens over het netwerk gaan. Aan de serverkant kan GraphQL juist trager zijn als query's niet worden begrensd en resolvers niet zijn geoptimaliseerd.

Welke programmeertalen ondersteunen GraphQL?

Vrijwel allemaal: er zijn volwassen GraphQL-libraries voor JavaScript/TypeScript, Python, C#, Java, Go, PHP en Rust.