GraphQL is een querytaal voor API’s waarmee de app zelf bepaalt welke data hij wil. In plaats van een handvol vaste URL’s aan te roepen, stuurt de app één verzoek met precies de velden die hij nodig heeft, en de server geeft die velden terug in één antwoord. Het resultaat: geen overbodige data en geen extra heen-en-weer.

Stel je voor dat je bij een buffet precies de gerechten aanwijst die je wilt, in de porties die je wilt, en er één bord terugkomt. Een klassieke REST API lijkt meer op een vast menu: je bestelt gerecht nummer drie en krijgt alles wat erbij hoort, ook de stukken die je laat staan. GraphQL geeft die controle aan de app, en daarom zijn mobiele schermen en dashboards er dol op.

Elke GraphQL-service draait om een schema, een getypeerd contract dat precies vastlegt welke velden en relaties er bestaan. Omdat dat schema gepubliceerd is, kunnen frontend-ontwikkelaars de API verkennen en queries schrijven zonder op documentatie van de backend te wachten, en tools vullen veldnamen automatisch aan terwijl je typt. Dat zelfbeschrijvende karakter is een grote reden waarom teams ervoor kiezen.

Een GraphQL-service draait meestal via één endpoint en geeft gewone JSON terug, zodat elke client het kan lezen. Het vervangt je database niet; het zit voor je bestaande services en rijgt hun data op aanvraag aan elkaar. De keerzijde: één onzorgvuldige query kan te veel opvragen en de server belasten, dus dieptelimieten en caching vragen echte aandacht.

Bij TopDevs kiezen we GraphQL als de apps van een klant elk een ander stukje van dezelfde data nodig hebben, want het snijdt het heen-en-weer weg en houdt mobiele ervaringen vlot.