Junior
Wat is GraphQL?
sobes.tech AI
Antwoord van AI
GraphQL is een querytaal voor API's en een uitvoeringsomgeving voor het uitvoeren van deze queries op jouw gegevens. Het biedt een alternatief voor REST, waarmee de client alleen de gegevens kan opvragen die hij nodig heeft, in één enkele query.
Belangrijke concepten:
- Schema: Definieert de beschikbare datatypes in de API, hun relaties en de beschikbare operaties (queries, mutaties, subscriptions).
- Queries: Worden gebruikt om gegevens te lezen. De client geeft aan welke velden hij nodig heeft.
- Mutaties: Worden gebruikt om gegevens te wijzigen (aanmaken, bijwerken, verwijderen).
- Subscriptions: Worden gebruikt om realtime gegevens te ontvangen via een persistente verbinding (bijvoorbeeld WebSocket).
Voorbeeld van een query:
query GetUserData {
user(id: "123") {
name
email
posts {
title
}
}
}
Het antwoord op deze query kan er als volgt uitzien:
{
"data": {
"user": {
"name": "Ivan",
"email": "ivan@example.com",
"posts": [
{ "title": "Mijn eerste artikel" },
{ "title": "Over GraphQL" }
]
}
}
}
Voordelen ten opzichte van REST:
- Over-fetching voorkomen: De client ontvangt alleen de gevraagde velden.
- Under-fetching / meerdere verzoeken voorkomen: Vaak kan alle benodigde informatie in één query worden verkregen, in tegenstelling tot REST, waar meerdere verzoeken naar verschillende endpoints nodig kunnen zijn.
- Sterke typecontrole: Het schema biedt duidelijke documentatie en validatie van queries.
- Betere prestaties: Minder gegevensoverdracht.
- Flexibiliteit aan de clientzijde: Clients kunnen zich onafhankelijk van de server ontwikkelen, door gegevens naar behoefte op te vragen.
Nadelen:
- Complexiteit bij het configureren van de server.
- Problemen met caching vergeleken met standaard REST-cachemethoden (bijvoorbeeld op HTTP-niveau).
- Foutafhandeling is complexer dan bij REST (waar standaard HTTP-statuscodes worden gebruikt).