Introductie van GraphQL

Als ontwikkelaar moet je bekend zijn met de klant-serverarchitectuur in software en het gebruik van REST om API's te ontwikkelen. Je moet ook vertrouwd zijn met verschillende eindpunten en begrijpen hoe sommige daarvan overbodig zijn. Het omgaan met REST API bij het eindpunt is daarom geen eenvoudige taak. Daarom wordt GraphQL geïntroduceerd om de complexiteit te verminderen door backend-gegevens op een systematische grafische manier weer te geven.

Development
01 juli 2020
Martijn van der Put

Wat is GraphQL?

GraphQL is een nieuwe API-held die ze ontwerpt en gebruikt. Het is een querytaal die wordt geleverd met een server-side runtime voor het uitvoeren van queriesGraphQL is niet beperkt tot één specifieke technologie; je kunt het implementeren in meerdere talen, afhankelijk van je behoeften. 

Het is een nuttig alternatief voor REST (Representational State Transfer) API. Je zult merken dat Facebook GraphQL op een heel andere manier heeft ontwikkeld dan REST. Het vormt een geheel nieuwe dimensie voor API's. Bijvoorbeeld, wanneer je een complexe webapplicatie laadt, moet je meerdere REST-aanroepen doen om de gegevens op te halen, wat resulteert in meer netwerkgebruik en het beheren van complexiteiten in asynchrone reacties. Het ziet er zo uit: 


In tegenstelling tot dit, hoef je met GraphQL slechts één query te maken en alle benodigde gegevens op te halen: 


Compositie terminologie van GraphQL-query  

Wanneer je overschakelt van een REST API naar een GraphQL API, zul je te maken krijgen met nieuwe architectonische en conceptuele terminologieën. Bijvoorbeeld:  



Schema is het typesysteem van de GraphQL API. Het bepaalt de volledige set gegevens, inclusief objecten, relaties, velden, etc. waartoe klanten toegang kunnen krijgen. Alle oproepen worden gevalideerd en uitgevoerd met het schema. Gebruikers kunnen schema-informatie vinden via introspectie. Het schema bevindt zich op de GraphQL-server. 

Veld 

Dit is een eenheid van gegevens die de gebruiker kan verkrijgen van een object. Volgens de officiële GraphQL-documentatie draait GraphQL om het selecteren van velden op objecten. Hieruit blijkt dat als je probeert terug te keren naar een niet-scalarveld, een schemavalidatie een foutmelding zal retourneren. Je moet geneste subvelden invoegentenzij alle velden scalair worden.  

Argument 

Het argument is een reeks sleutelwaarden gekoppeld aan een bepaald veld. Sommige velden, zoals mutatie, vereisen een invoerobject als argument.  

Implementatie 

Implementatieterminologie wordt gebruikt door het GraphQL-schema om te definiëren hoe een bepaald object is afgeleid van een interface. Bijvoorbeeld: 


Het voorbeeld laat zien dat object Y dezelfde veld-/argument-/return-type vereist in vergelijking met interface X bij het invoegen van een nieuw veld in object Y. 

Connectie 

Connecties bieden objecten gerelateerd aan een query in dezelfde oproep. Het voordeel van het gebruik van een connectie is dat je één GrapQL-oproep kunt gebruiken in plaats van meerdere oproepen in een REST API. Het helpt bij de vorming van een grafische weergave door alle punten met lijnen te verbinden. Punten worden aangeduid als knooppunten en de lijnen als randen. Kortom, een connectie vertelt over de relatie tussen verschillende knooppunten. 

Rand 

Een rand definieert een verbinding tussen meerdere knooppunten. Wanneer je een connectiequery verzendt, doorloop je de randen om de knooppunten op te halen. Zo heeft één veld voor randen een veld voor knooppunten en een veld voor de cursor. Voor paginering worden cursorvelden gebruikt.  

GraphQL-variabelen 

Bij het omgaan met zeer gecompliceerde GraphQL-query's moet je variabelen gebruiken om dynamisch een waarde binnen een query te specificeren. In deze situatie moet je bijvoorbeeld de ID van een persoon als een string toevoegen binnen de query:  


ID zal waarschijnlijk de dynamiek van je programma veranderen, dus je moet een manier vinden om het door te geven zonder stringinterpolatie. Door variabelen te gebruiken, kan dezelfde query als volgt worden samengesteld:  


Volgens de bovenstaande syntaxis heb je de naam GetOwner toegewezen aan je query. Je moet eraan denken als een beroemde functie, terwijl je eerder te maken had met een anonieme functie. Benoemde queries zijn zeer functioneel wanneer je veel queries in je applicatie behandelt. Wanneer een query wordt gedefinieerd met variabelen, lijkt het op een functiedefinitie en kan het equivalent werken.  


Waarom GraphQL gebruiken? 

Eeuwenlang was REST een populaire manier om gegevens van een server bloot te stellen. Toen REST aan ontwikkelaars werd geïntroduceerd, waren applicaties destijds veel eenvoudiger dan de ontwikkeling van vandaag. Daarom was REST een ideale keuze voor talloze toepassingen. Echter, de afgelopen jaren is het API-landschap dynamisch verschoven. Deze verandering in de dynamiek heeft ontwikkelaars aangemoedigd om oplossingen zoals GraphQL te gebruiken die zijn ontworpen om aan de huidige eisen te voldoen.   



Toename in het gebruik van mobiele apparaten – Met de golf van toename van mobiele apparaten heeft de lage energieconsumptie en verminderde netwerksnelheid Facebook aangemoedigd om GraphQL te ontwikkelen. Het minimaliseert de hoeveelheid gegevensoverdracht over het netwerk. Hierdoor zal de prestatie van de applicatie niet lijden onder ongunstige omstandigheden. 

Diverse Front-end Frameworks – Met het heterogene landschap van front-end frameworks is het moelijk voor clientapplicaties om een enkele API te bouwen en te onderhouden om aan alle eisen te voldoen. Maar met GraphQL kan elke client eenvoudig toegang krijgen tot de benodigde gegevens zonder gedoe. 

Versnelde ontwikkeling – Snelle en voortdurende ontwikkeling heeft de lat hoger gelegd voor bedrijven. Nieuwe bedrijven moeten een manier vinden om snelle iteraties en frequente productupdates te overtreffen. De methode van REST API’s voor het blootstellen van gegevens en het specificeren van client-side ontwerpeisen moet worden aangepast om het ontwikkelingsproces te versnellen. Met GraphQL kunnen belemmeringen van een snel ontwikkelingstempo eenvoudig worden aangepakt.  


Conclusie 

Tegenwoordig is GraphQL overgenomen door talloze vooruitstrevende bedrijven zoals GitHub, YelpShopify en enkele anderen. Als je de efficiëntie en kracht van je applicatie wilt verbeteren om slechte netwerken en zwakke energie te overwinnen, moet je zonder enige twijfel GraphQL API adopteren. Voor een beter resultaat van zowel je client-side als backend-side applicatie is GraphQL nodig. Bovendien werkt GraphQL samen met ASP.NET Core 


Neem contact op voor meer informatie of laat een berichtje achter. We helpen graag!

Cookies
Deze site gebruikt geanonimiseerde cookies. Klik op "Akkoord" als je akkoord gaat met het gebruik van cookies, of klik op "Aanpassen" om je voorkeuren te bepalen.
Deze site gebruikt geanonimiseerde cookies.