GraphQL is a data query and manipulation language for APIs, that allows a client to specify what data it needs (“declarative data fetching”). A GraphQL server can fetch data from separate sources for a single client query and present the results in a unified graph,[2] so it is not tied to any specific database or storage engine.

Ik was fan in 2018, vooral vanwege de strong typing, automatische documentatie en flexibiliteit voor frontenders / mobile devs om zelf te kiezen welke data ze wel en niet uitvragen (consumer driven contracts idd). Uiteraard was het op de achterkant lastig om het performant en veilig te houden, en ik zou het zeker niet voor alle use cases aanraden.

Als je een goede REST api ontwerper hebt kan je prima REST en openapi specs schrijven, maar mijn ervaring leerde dat RESTful te vrij was en het snel een zootje werd met parameters en hacks om al dan niet gerelateerde data te hydraten of niet. Dan kan je beter een strikte spec afdwingen met graphql.