/
/

Wat is GraphQL en hoe werkt het met API’s?

door Team Ninja
What GraphQL Is and How It Works With APIs blog banner image

Directe samenvatting

Deze blogpost van NinjaOne biedt een uitgebreide basislijst met CMD-commands en een deep dive duik in Windows-commands met meer dan 70 essentiële cmd-commands voor zowel beginners als gevorderden. Het legt praktische opdrachtpromptcommando’s uit voor file management, directory navigation, network troubleshooting, disk operations en automatisering met echte voorbeelden om de productiviteit te verbeteren. Of u nu fundamentele cmd-commands leert of geavanceerde Windows CLI-tools onder de knie krijgt, deze gids helpt u de Command Prompt effectiever te gebruiken.

Belangrijkste punten

  • GraphQL is een open source querytaal voor API’s. Clients kunnen er via één endpoint precies de gegevens mee opvragen die ze nodig hebben.
  • Een GraphQL API bestaat uit componenten zoals schema’s, resolvers, queries en mutations. Die bepalen welke gegevens toegankelijk zijn, hoe ze worden opgehaald en hoe ze kunnen worden gewijzigd.
  • GraphQL brengt meerdere gegevensbronnen samen in één endpoint dat reageert op gestructureerde queries die de client zelf definieert.
  • GraphQL is het meest geschikt voor complexe, flexibele gegevensomgevingen zoals mobiele applicaties, interne dashboards en klantportalen.
  • GraphQL brengt verschillende beveiligingsaspecten met zich mee, waaronder het afdwingen van authenticatie, het beperken van de querydiepte, controle op introspectie en schema governance.
  • Organisaties met eenvoudige, voorspelbare resourcepatronen of beperkte IT-governancecapaciteit merken mogelijk dat REST aan hun behoeften voldoet met minder operationele overhead.

GraphQL is een querytaal waarmee API’s worden gebouwd die applicaties de mogelijkheid geven om gegevens op te vragen bij backendsystemen. In plaats van een vast antwoord terug te sturen vanaf een vooraf gedefinieerd endpoint laat GraphQL de client beschrijven welke gegevens hij nodig heeft.

Deze flexibiliteit kan onnodige gegevensoverdracht beperken en interacties met API’s vereenvoudigen. Het is echter geen perfecte oplossing, want er komen ook operationele overwegingen bij kijken. IT-teams, ontwikkelaars en automatiseringsteams moeten begrijpen hoe GraphQL-queries, -schema’s, -mutations en -resolvers werken voordat ze GraphQL API’s gaan gebruiken of ondersteunen.

Wat is GraphQL?

GraphQL is een open source querytaal en runtimespecificatie voor API’s. Clients kunnen er specifieke velden mee opvragen die in een schema zijn gedefinieerd. Een GraphQL API stelt doorgaans één endpoint beschikbaar waar clients gestructureerde queries indienen. De API haalt de gevraagde gegevens vervolgens op uit de onderliggende systemen.

GraphQL wordt vaak gebruikt wanneer applicaties flexibele toegang tot gegevens nodig hebben of wanneer clients verschillende responsstructuren moeten gebruiken. Enkele toepassingen van GraphQL zijn:

  • Webapplicaties
  • Mobiele applicaties
  • Interne dashboards
  • Klantportalen
  • API-aggregatielagen
  • Elk systeem dat gegevens uit meerdere backendservices combineert

Hoe werkt een GraphQL API?

Een GraphQL API fungeert als interface tussen clients en backendsystemen. Hij stelt doorgaans één endpoint beschikbaar waar clients queries indienen, waarna de API gegevens uit een of meer onderliggende gegevensbronnen ophaalt en combineert voordat hij een antwoord teruggeeft.

Een GraphQL API steunt op verschillende kerncomponenten om te kunnen functioneren.

  • Schema: dit is de definitie van een GraphQL API. Het specificeert de beschikbare gegevenstypen, velden, relaties en de bewerkingen (queries en mutations) die clients kunnen uitvoeren.
  • Typesysteem: dit definieert de gegevenstypen en structuren die het GraphQL-schema gebruikt en legt vast hoe gegevens binnen de API worden weergegeven en aan elkaar gerelateerd zijn.
  • Query: dit is het gestructureerde verzoek dat een client naar een GraphQL API stuurt om gegevens op te halen. De query weerspiegelt doorgaans de structuur van het antwoord dat de client verwacht te ontvangen.
  • Resolver: dit zijn uw data fetchers. Ze verbinden de gegevens die in het schema zijn gedefinieerd met de gegevens die in de gegevensbronnen beschikbaar zijn. Zo kan de API de juiste waarde teruggeven die de client heeft gevraagd.
  • Mutation: hiermee kunt u gegevens in de gegevensbronnen wijzigen via de GraphQL API, waaronder het aanmaken, bijwerken of verwijderen van gegevens.
  • Endpoint: dit is het toegangspunt van de API waar clients GraphQL-queries indienen. De GraphQL API verwerkt die queries en stuurt het resulterende antwoord terug naar de client.

Bij het gebruik van een GraphQL API bepalen het schema en het typesysteem welke gegevensstructuren en bewerkingen beschikbaar zijn. Een client dient een query in bij het GraphQL-endpoint en resolvers halen de gevraagde gegevens op of genereren ze. Wanneer een client een bewerking moet uitvoeren die de staat van de applicatie wijzigt, gebruikt hij een mutation die door de GraphQL API wordt uitgevoerd.

Wat doet een GraphQL-query?

Een GraphQL-query is een bericht van de client dat de API precies vertelt wat hij moet doen. Een mobiele applicatie heeft bijvoorbeeld de gebruikersnaam, het e-mailadres en de toegewezen apparaten nodig. Om die informatie te krijgen, stuurt hij een query die al deze informatie in één bericht opvraagt. Als alleen de gebruikersnaam en het e-mailadres nodig zijn, neemt hij alleen die velden in de query op.

GraphQL-queries kunnen over-fetching beperken doordat clients specifieke velden kunnen opvragen en ze kunnen under-fetching verminderen doordat gerelateerde gegevens in één query kunnen worden opgehaald. Ook voorkomt het filteren aan de clientkant doordat API-antwoorden te breed zijn.

GraphQL vergeleken

GraphQL versus REST

Een Representational State Transfer (REST) API organiseert resources over meerdere endpoints, waarbij elk endpoint doorgaans een vooraf gedefinieerde resourcestructuur beschikbaar stelt. GraphQL stelt daarentegen meestal een query-interface beschikbaar waarmee clients specifieke velden uit een of meer onderliggende gegevensbronnen kunnen opvragen.

REST is over het algemeen een meer server-gedreven aanpak, terwijl GraphQL doorgaans meer client-gedreven is. REST past goed bij eenvoudigere en beter voorspelbare patronen van gegevenstoegang, terwijl GraphQL vaak voordelen biedt wanneer clients flexibele toegang tot gerelateerde gegevens of verschillende responsstructuren nodig hebben.

GraphQL versus SQL

GraphQL en SQL worden soms verward omdat er bij beide queries komen kijken, maar het zijn heel verschillende dingen. SQL is een querytaal voor relationele databases. Het wordt gebruikt om de gegevens in een database op te halen, te wijzigen en te beheren. GraphQL is daarentegen een querytaal voor API’s. Het bepaalt hoe clients gegevens kunnen opvragen bij een API-laag, die soms wel maar niet noodzakelijkerwijs verbonden is met een SQL-database.

GraphQL versus Microsoft Graph API

Ondanks hun vergelijkbare namen hebben GraphQL en de Microsoft Graph API niets met elkaar te maken. GraphQL is een algemene querytaal die op API’s wordt gebruikt, terwijl de Microsoft Graph API de uniforme API van Microsoft is waarmee gebruikers toegang krijgen tot gegevens uit Microsoft 365 en andere gerelateerde clouddiensten.

Voordelen van GraphQL

GraphQL biedt veel voordelen, waaronder:

  • Flexibel gegevens ophalen: clients kunnen alleen de gegevens opvragen die ze op dat moment nodig hebben.
  • Minder API-heen-en-weerverkeer: gerelateerde gegevens kunnen vaak via één query worden opgehaald, waardoor het aantal API-verzoeken van de client kan afnemen.
  • Sterke schemastructuur: het schema van de API definieert duidelijk welke gegevens beschikbaar zijn.
  • Meer flexibiliteit aan de frontend: verschillende clients kunnen verschillende datavormen opvragen, afhankelijk van hun behoeften.
  • Doorontwikkeling van de API: velden kunnen worden toegevoegd zonder dat u bij elke wijziging een nieuw endpoint hoeft te maken.
  • Ondersteuning voor aggregatie: een GraphQL API kan één uniforme interface bieden voor toegang tot gegevens uit meerdere backendsystemen.

Beperkingen en operationele overwegingen bij GraphQL

GraphQL is geen perfecte oplossing. Hier zijn enkele beperkingen en zaken waarmee u rekening moet houden voordat u het gaat gebruiken:

  • Om veiligheidsredenen moet u ervoor zorgen dat gebruikers en systemen correct zijn geverifieerd voordat ze toegang krijgen tot de API.
  • Bij flexibele queries moet u waarborgen inbouwen zodat de gebruiker geen informatie kan benaderen waartoe hij geen toegang hoort te hebben.
  • U hebt een manier nodig om excessief of misbruikend querygedrag te beheersen en zo de gegevens van uw organisatie te beschermen.
  • GraphQL vraagt mogelijk om specifieke cachingstrategieën waarin u zich moet verdiepen voordat u met de implementatie begint.
  • Beheerders moeten queryprestaties, fouten, latentie en gebruikspatronen volgen.
  • Voordat u wijzigingen aanbrengt in het API-schema, moet u controleren of die uw clients niet verstoren of onnodige gegevens blootstellen.
  • U moet zicht hebben op welke queries worden uitgevoerd en hoe die presteren.

Wanneer gebruikt u GraphQL?

GraphQL past goed wanneer uw client verschillende datavormen uit dezelfde API nodig heeft of wanneer uw applicaties regelmatig gerelateerde gegevens uit meerdere bronnen nodig hebben. Ook wanneer uw backendgegevens uit meerdere bronnen komen of u de payloadgrootte moet beperken. Uiteindelijk geeft GraphQL clients flexibiliteit doordat ze verschillende velden en responsstructuren kunnen opvragen zonder dat de API voor elke use case aangepast hoeft te worden.

Het is echter geen perfecte oplossing. Werkt u met voorspelbare resourcepatronen, dan voldoet REST aan uw behoeften. Bent u nog een kleine organisatie, dan heeft uw IT-team misschien niet de capaciteit om schema governance en querycontroles bij te houden. GraphQL is bedoeld voor complexe en flexibele queries en als u die niet nodig hebt, voegt het mogelijk een onnodige laag complexiteit toe aan uw activiteiten.

Stroomlijn gegevensqueries met GraphQL

GraphQL is een querytaal voor API’s. Clients kunnen er GraphQL mee opvragen, wat ze flexibiliteit geeft doordat ze verschillende velden en responsstructuren kunnen opvragen zonder dat de API voor elke use case aangepast hoeft te worden.

Gerelateerde artikelen:

FAQs

Geen van beide. GraphQL is een querytaal en runtimespecificatie voor API’s. Het bevindt zich tussen de client en de datalaag en bepaalt hoe gegevens kunnen worden opgevraagd en teruggegeven, maar het slaat zelf geen gegevens op.

GraphQL is taalonafhankelijk. Er zijn volwassen bibliotheken beschikbaar voor de meeste gangbare programmeertalen.

GraphQL-introspectie is een functie waarmee clients het schema van de API rechtstreeks kunnen opvragen. Introspectie is handig voor ontwikkeling en tooling, maar het kan details over de API-structuur blootleggen. In productieomgevingen beperken organisaties introspectie vaak tot geverifieerde en geautoriseerde gebruikers of schakelen ze het uit wanneer dat passend is.

Het N+1-probleem treedt op wanneer een GraphQL-resolver een bovenliggend record ophaalt en vervolgens voor elk gerelateerd onderliggend record een aparte databasequery uitvoert. Dat resulteert in één query voor de ouder en N extra queries voor N kinderen, wat de prestaties op schaal verslechtert.

Schema stitching en schema federation zijn twee benaderingen om meerdere GraphQL-schema’s van verschillende services samen te voegen tot één uniforme API. Schema stitching voegt schema’s samen op gatewayniveau, terwijl Apollo Federation afzonderlijke services hun eigen subgraphs laat beheren en publiceren, die een gateway vervolgens samenstelt tot een supergraph.

Dit vindt u misschien ook leuk

Klaar om de moeilijkste delen van IT te vereenvoudigen?