Gebruik van GraphQL: wanneer wel en wanneer niet?
GraphQL is een krachtige querytaal voor het maken van verbluffende API's, dat weten we. Maar veel mensen weten niet wanneer GraphQL de ideale keuze is en wanneer niet.
Wat is GraphQL?
Het is een fenomenale querytaal voor je API en een server-side runtime voor het systematisch implementeren van query’s waar een typesysteem wordt gebruikt om je gegevens te definiëren. GraphQL is niet gekoppeld aan een specifieke database of opslagengine – het wordt eenvoudig ondersteund door je code en gegevens.
GraphQL-services worden ontwikkeld door types en velden om types te definiëren en functies voor elk veld. Bijvoorbeeld, een GraphQL-service die laat zien wie er is ingelogd als een gebruiker en de gebruikersnaam kan er zo uitzien:
Wanneer kiezen voor GraphQL?
Als je van plan bent GraphQL te gebruiken, zijn er bepaalde situaties waarin je er zonder aarzelen voor moet kiezen, zoals:
1. Bij het ontwikkelen van mobiele apps
Het is het beste om te vertrouwen op de kracht van GraphQL bij het ontwerpen van UI/UX-rijke toepassingen voor smartphones, smartwatches en IoT-apparaten. GraphQL kan helpen bij het laden van inhoud die de gebruiker daadwerkelijk nodig heeft en het behouden van de gebruikerservaring bij trage netwerksnelheden.
2. Bij het beheren van een complex schema
GraphQL kan helpen bij het beheren van complexe schema’s. Als je applicatie is gebaseerd op talrijke schema’s die meerdere geneste modellen en associaties gebruiken, zou je voor GraphQL moeten kiezen. REST is op dit gebied zeer beperkt als je waarschijnlijk te maken krijgt met complexe query’s. Als querytaal kan GraphQL eenvoudig toegang krijgen tot geneste objecten met een enkel API-verzoek en gestructureerde gegevens correct taggen, samen met JSON.
3. Als je de backend-complexiteiten voor de klant wilt verbergen
GraphQL heeft twee prominente kenmerken die het perfect maken voor microservices-orchestratie. Het eerste kenmerk stelt je in staat om je RESTful API abstract te maken en een geünificeerde en volledig geoptimaliseerde openbare API te creëren voor je microservices. Het voordeel van dit kenmerk is dat je toekomstige versies van je API soepel kunt afhandelen. Het tweede kenmerk gaat over de situatie waarin je een enkel GraphQL-schema maakt door schema’s samen te voegen vanuit meerdere onderliggende GraphQL-API's. Beide kenmerken helpen bij het verbergen van codecomplexiteiten voor de klanten.
4. Als je een betere ontwikkelervaring wilt
Het beste scenario om GraphQL te gebruiken, is wanneer je een betere ervaring wilt bieden aan je ontwikkelaars. Met de beschrijvende taal om complexe query’s te verwerken, de mogelijkheid om het laden van state management te vereenvoudigen en de faciliteit om met types te manipuleren in plaats van te rommelen met JSON-gegevens.
5. Als je applicatiegegevens van meerdere API’s ontvangt
Als je een toepassing ontwikkelt met een composietpatroon waarbij je app gegevens ophaalt uit meerdere opslag-API's, zou je GraphQL moeten gebruiken. Bijvoorbeeld bij het maken van een dashboard dat gegevens ontvangt van verschillende bronnen, zoals logservices, back-ends voor consumptiestatistieken en tools van derden voor het vastleggen van interacties van eindgebruikers. Met behulp van GraphQL kan het proxy-patroon aan de klantzijde worden ingevoegd om een bestaande API te vereenvoudigen. Op deze manier kan elke gebruiker een responsstructuur concretiseren die is afgestemd op hun specifieke behoeften.
Wanneer moet je GraphQL vermijden?
Als je van plan bent je API te baseren op GraphQL, zou je je idee moeten laten varen in de volgende situaties.
1. Als je al REST hebt
GraphQL is een effectief alternatief voor REST, dus wanneer je bekend bent met REST, waarom zou je dan kiezen voor vervanging? Het belangrijkste kenmerk van GraphQL is het versturen van een query gespecificeerd met de exacte informatie die je nodig hebt. Maar dit kan eenvoudig worden bereikt met REST – door de naam van het veld door te geven aan het gebruiken ervan in de URL. Bovendien zijn er veel JSON-bibliotheken beschikbaar die je kunnen helpen bij het implementeren en ondersteunen van deze specificatie.
2. Als je een makkelijke oplossing wilt
Wanneer je van plan bent om een eenvoudige applicatie met een paar velden te ontwikkelen, kan GraphQL je gebruik ingewikkelder maken door zaken toe te voegen zoals types, query’s, resolvers, mutatoren en andere geavanceerde componenten. Al deze extra componenten zijn helemaal niet praktisch vanuit het oogpunt van onderhoud. Dus, als je niet wilt vastlopen in een wirwar van fouten, gebruik dan geen GraphQL voor eenvoudige toepassingen.
3. Als je webcache wilt gebruiken
Het implementeren van een webcache op databaseniveau of op het klantniveau met een in-memory cache-implementatie kan een eenvoudige taak zijn. Een cache-implementatie op het HTTP-niveau met een omgekeerde proxyserver die de inhoud van een verzoek opslaat, kan de hoeveelheid verkeer verminderen die een server bereikt. Aangezien REST talloze endpoints biedt, is het eenvoudig om een webcache te configureren naar een URL.
4. Als prestaties je prioriteit zijn
GraphQL geeft de kracht om query's uit te voeren om exacte resultaten te krijgen. Maar als een klant een query stuurt voor talrijke velden en resources, zou je tegen prestatieproblemen kunnen aanlopen. Voor complexe query’s moet GraphQL zeer zorgvuldig worden ontworpen, en je kunt niet zomaar boven op de REST-API of database plaatsen. Je moet elk eindpunt definiëren en query’s afstemmen om specifieke gegevens op te halen. Dit ontwerpen en definiëren kan de prestatie van de API beïnvloeden.
5. Wanneer GraphQL-schema's een probleem kunnen veroorzaken
Door een schema te definiëren, kun je geautomatiseerde validatie- en introspectiefunctionaliteiten ervaren. Maar schema’s zijn uiteindelijk statisch, dus de respons van klanten gaat ervan afhangen. In GraphQL kun je meer diepgang verwachten dan je hebt gespecificeerd, wat betekent dat je enkele van de dynamische functies van GraphQL moet compromitteren. Dus, als je toepassing geen gespecificeerd schema vereist, moet je het gebruik van GraphQL vermijden.
Conclusie: wel of niet GraphQL?
Met voldoende kennis over wanneer en wanneer niet GraphQL te gebruiken, kun je de krachtige querytaal op de juiste manier benutten. GraphQL is een uitstekend alternatief voor REST, maar niet in alle situaties. Evalueer daarom je toepassing en de functies die je erin wilt opnemen voordat je GraphQL gebruikt.
Neem contact op voor meer informatie of laat een berichtje achter. We helpen graag!