DOCS

Waarom GraphQL

Waarom GraphQL

Ontdek waarom we aanbevelen om via GraphQL te integreren in plaats van REST.

Bij Zonos bieden we twee hoofdtypen API's voor integratie: GraphQL en REST. Hoewel REST API's langer bestaan en voor velen misschien bekender zijn, zijn we overgestapt op GraphQL om meer flexibiliteit en snellere innovatie mogelijk te maken. Hoewel beide nog steeds worden ondersteund, legt deze gids uit waarom GraphQL niet alleen de toekomst van onze integraties is, maar ook de toekomst van integraties in het algemeen en een krachtiger hulpmiddel om aan uw behoeften vandaag te voldoen.

Wat is GraphQL? 

GraphQL is een alternatieve manier om met API's te communiceren die zeer geschikt is voor complexe datastructuren en het bouwen van interfaces bovenop deze structuren. In tegenstelling tot het behandelen van gegevens als afzonderlijke, op zichzelf staande stukken, laat GraphQL zien hoe gegevensstukken met elkaar verbonden zijn en zich tot elkaar verhouden, waardoor het gemakkelijk wordt om informatie op te vragen en te ontvangen.

Beschouw GraphQL als een querytaal waarmee u met de API kunt communiceren alsof u rechtstreeks met de database praat. Het gebruik van GraphQL stelt u in staat om zo dicht mogelijk bij de database te komen, zodat u kunt kiezen welke gegevens u wilt en hoe u deze wilt ontvangen, wat een enorme prestatievoordeel oplevert.

GraphQL is gemaakt door Facebook om het probleem van schaling met complexe datastructuren op te lossen. Als gevolg van hun succesvolle adoptie ervan, beginnen steeds meer bedrijven de voordelen van het gebruik van GraphQL voor hun API's te realiseren.

Belangrijke verschillen met REST

GraphQL API's zijn gemakkelijker om mee te werken dan u misschien denkt. Als u gewend bent om met REST API's te werken, zijn hier de fundamentele verschillen om in gedachten te houden:

KenmerkRESTGraphQL
EindpuntVerzoeken worden gedaan aan meerdere eindpunten voor verschillende actiesAlle verzoeken worden gedaan aan een enkel eindpunt (bijv. /graphql)
GegevensophalingGebruik GET-methoden op specifieke eindpunten om gegevens op te halenGebruik queries om precies de benodigde gegevens op te vragen, waardoor over-fetching of under-fetching wordt verminderd
Gegevenswijziging/actiesGebruik HTTP-methoden zoals POST, PUT, PATCH of DELETE om gegevens te wijzigen of te verwerken.Gebruik mutaties om bewerkingen uit te voeren (bijv. partijen aanmaken, landed costs berekenen)
AntwoordformaatVaste antwoordformaten retourneren alle vooraf gedefinieerde velden, ongeacht of ze nodig zijnFlexibele antwoorden stellen in staat om precies de velden op te geven die moeten worden opgenomen, waardoor onnodige gegevensoverdracht wordt verminderd
GegevensverbindingVaak zijn meerdere verzoeken nodig om gerelateerde gegevens op te halenGeneste queries maken het mogelijk om gerelateerde gegevens in één verzoek op te halen (bijv. partijdetails en verzenditems samen). Gebruikers kunnen ook workflows bouwen om meerdere mutaties binnen één GraphQL-verzoek te beheren, waardoor de complexiteit wordt verminderd en de efficiëntie wordt verbeterd

Voordelen van GraphQL

Snellere antwoorden

GraphQL biedt snellere antwoorden door nauwkeurige gegevensophaling, het gebruik van een enkel eindpunt en verbeterde mogelijkheden voor batching en caching.

Nauwkeurige gegevensophaling

Een veelvoorkomend probleem met REST is over-fetching of under-fetching van gegevens—ofwel te veel onnodige informatie krijgen of niet genoeg van wat nodig is in één keer. GraphQL elimineert dit door verzoeken toe te staan voor precies wat nodig is—niets meer, niets minder. Deze specificiteit verbetert niet alleen de prestaties, maar vereenvoudigt ook het proces voor degenen die met de API werken, waardoor het systeem efficiënter en gebruiksvriendelijker wordt.

Voorbeelden van hoe dit nuttig is:

  • Dit stelt frontend-ontwikkelaars in staat om precies de gegevens op te halen die ze nodig hebben voor hun UI-componenten, waardoor het aantal rondreizen naar de server wordt verminderd en de prestaties worden verbeterd.
  • Stel je voor dat je een HS-codeclassificatie, cartonisatie, verzendbeoordeling en landed cost offerte wilt krijgen voor items in een checkout. Als je geïntegreerd bent via de GraphQL API, kun je een enkele oproep doen met de benodigde workflows om alles te krijgen wat je nodig hebt (en niets wat je niet nodig hebt) in één enkele reactie. In tegenstelling tot REST API's, zou je eerst de Classify REST API moeten aanroepen, daarna de Rating REST API apart moeten aanroepen, en tenslotte die classificatie en verzendbeoordeling in je derde oproep naar de Landed Cost REST API moeten pluggen. Al deze REST API's zouden elk stuk informatie retourneren dat ze kunnen, waardoor je door de reactie moet parseren voor de gegevens die je nodig hebt. Deze besparing in snelheid heeft invloed op het snel retourneren van een complete landed cost voordat de shopper vertrekt.

Enkel eindpunt

GraphQL API's hebben doorgaans een enkel eindpunt, in tegenstelling tot REST API's die vaak meerdere eindpunten hebben voor verschillende bronnen en acties. Dit maakt het eenvoudiger om de API te beheren en te begrijpen.

Batching en caching

De mogelijkheid van GraphQL om queries te batchen en de ondersteuning voor cachingstrategieën leiden tot aanzienlijke prestatieverbeteringen. Deze functies verminderen de belasting op netwerken en servers, wat resulteert in snellere, betrouwbaardere interacties voor gebruikers.

Goed gedefinieerde schema's

GraphQL API's zijn gebaseerd op een sterk getypeerd schema. Dit schema definieert de structuur van de beschikbare gegevens en de bewerkingen die kunnen worden uitgevoerd. Dit biedt duidelijkheid over welke gegevens beschikbaar zijn en hoe deze toegankelijk zijn, wat de productiviteit van ontwikkelaars kan verbeteren en fouten kan verminderen. Bijvoorbeeld, frontend-teams kunnen de grafiek verkennen om precies te krijgen wat ze nodig hebben in plaats van te wachten op een nieuw REST-eindpunt.

Mogelijkheid om te verbeteren zonder bestaande clients te breken

Het toevoegen van nieuwe functies of het wijzigen van bestaande functies in GraphQL verstoort de huidige integraties niet, dankzij de flexibele querystructuur. Deze mogelijkheid zorgt ervoor dat verbeteringen kunnen worden aangebracht zonder de compatibiliteit met bestaande clients te breken.

Actuele documentatie

Dankzij de introspectiefunctie van GraphQL wordt documentatie automatisch gegenereerd en bijgewerkt met elke wijziging. Dit zorgt ervoor dat alle informatie die aan ontwikkelaars wordt verstrekt actueel is, waardoor integratieproblemen en ondersteuningsverzoeken met betrekking tot verouderde documentatie—een uitdaging die vaak wordt aangetroffen bij REST API-documentatie—worden verminderd.

Bekijk onze GraphQL-documentatie en onze REST-documentatie om het verschil te zien.

Een analogie 

Stel je voor dat je in een restaurant bent met een menu waarmee je gerechten precies kunt bestellen zoals je ze wilt, vergeleken met een ander restaurant waar je alleen uit vaste maaltijden kunt kiezen. GraphQL is als het eerste restaurant:

  • Krijg precies wat je wilt: Met GraphQL kun je precies de gegevens opvragen die je nodig hebt, niet meer, niet minder. Stel je voor dat je alleen de naam en prijs van een gerecht wilt, niet de hele lijst met ingrediënten. Met REST API's moet je de volledige gerechtgegevens ophalen en de delen negeren die je niet nodig hebt.
  • Stel een aangepast gerecht samen: Onze GraphQL API's kunnen gemakkelijk worden gecombineerd om meer op maat gemaakte oplossingen te creëren, vergelijkbaar met een buffet-restaurant waar je een uniek gerecht kunt samenstellen precies zoals je het nodig hebt, met ingrediënten die ze al hebben. In tegenstelling tot een REST API is een REST API als een bakkerij met kant-en-klare producten verpakt in manden—je kunt alleen bestellen wat al is gemaakt en je kunt niet kiezen om alleen het stuk mee naar huis te nemen dat je wilt.
  • Minder wachten: Aangezien je alle informatie die je nodig hebt in één verzoek kunt krijgen, is het alsof je je ober vraagt om je voorgerecht, hoofdgerecht en dessert allemaal tegelijk te brengen, in plaats van te wachten tussen de gangen. De meeste REST API's vereisen dat je meerdere verzoeken indient om verschillende stukjes informatie te krijgen.
  • Gemakkelijk om bestellingen te wijzigen: Als de gegevensbehoeften van je app veranderen, maakt GraphQL het gemakkelijker om aanpassingen te doen. Je hoeft alleen de query te wijzigen voor wat je nodig hebt. Met REST moet je misschien wachten tot de keuken (backend) een nieuwe maaltijd (endpoint) voor het menu maakt, wat meer tijd kost.

GraphQL biedt meer flexibiliteit, efficiëntie en eenvoud voor het ophalen van gegevens dan REST API's, vooral naarmate je behoeften veranderen of groeien.

Hoe Zonos GraphQL gebruikt 

Tijdens de modernisering van ons platform in de afgelopen paar jaar heeft Zonos de keuze gemaakt om nieuwe functionaliteit te bouwen met behulp van GraphQL voor onze API in plaats van REST. We hebben ervoor gekozen omdat onze gegevens complex en onderling verbonden zijn, vergelijkbaar met de gegevens die Facebook ertoe hebben gebracht GraphQL te creëren. Deze complexiteit maakt het uitdagend om schaalbare REST API's te bouwen omdat de manieren waarop ontwikkelaars de gegevens moeten ophalen en gebruiken dramatisch variëren tussen implementaties, en REST is niet flexibel.

GraphQL lost dit probleem netjes op door ontwikkelaars die onze API implementeren in staat te stellen precies te kiezen welke gegevens ze willen en hoe ze deze krijgen. Dit stelt hen in staat om het in hun workflows te passen zonder dat Zonos voor elke situatie maatwerk hoeft te doen (terwijl ze wachten).

Het gecombineerde resultaat van het gebruik van GraphQL en de moderniseringen in ons platform heeft onze API beter presterend gemaakt, het integreren van Zonos in jouw systemen sneller gemaakt, en het mogelijk gemaakt voor Zonos om nieuwe functies sneller te leveren.

Betere functies

Zonos ontwikkelt continu nieuwe functies, en GraphQL is de eerste (en meestal enige) die deze updates ontvangt. In tegenstelling tot dat zijn onze REST API's als verouderd beschouwd en kunnen ze geen toegang krijgen tot veel van onze nieuwe functies.

Voorbeelden van functies die beperkt zijn tot GraphQL:

  • Inclusive pricing
  • Labels API
  • Nieuwe Checkout en Hello
  • Doosgroottes in API-respons
  • Dashboardrapportage
  • Mogelijkheid om een DDP-offerte aan te vragen indien mogelijk, maar nog steeds een DDU-offerte terug te geven als DDP niet beschikbaar is voor dat land met dat serviceniveau
  • Gedetailleerde uitsplitsing van rechten, belastingen en vergoedingen (artikel-niveau informatie, specifieke vergoedingen)—Dashboard wordt aangedreven door GraphQL en toont deze gegevens voor alle winkels, maar de REST API-respons bevat dit niveau van detail niet
  • Testmodus (binnenkort beschikbaar)

Was deze pagina nuttig?