DOCS

Hvorfor GraphQL

Oppdag hvorfor vi anbefaler å integrere via GraphQL fremfor REST.

Hos Zonos tilbyr vi to hovedtyper APIer for integrering: GraphQL og REST. Selv om REST APIer har vært rundt lenger og kan være mer kjent for mange, har vi gått over til GraphQL for å tillate større fleksibilitet og raskere innovasjon. Selv om begge fortsatt støttes, forklarer denne veiledningen hvorfor GraphQL ikke bare er fremtiden for integreringene våre, men også fremtiden for integreringer generelt og et mer kraftig verktøy for å møte dine behov i dag.

Hva er GraphQL? 

GraphQL er en alternativ måte å kommunisere med APIer på som passer godt for komplekse datastrukturer og bygging av grensesnitt på toppen av dem. I stedet for å behandle data som separate, frittstående deler, viser GraphQL hvordan datadeler kobler seg sammen og forholder seg til hverandre, noe som gjør det enkelt å spørre etter og motta informasjon.

Tenk på GraphQL som et spørrespråk som lar deg snakke med APIen som om du snakket direkte med databasen. Ved å bruke GraphQL kan du komme så nær databasen som mulig, slik at du kan plukke og velge hvilke data du vil ha og hvordan du får dem, noe som gir en massiv ytelsesfordel.

GraphQL ble opprettet av Facebook for å løse problemet med å skalere med komplekse datastrukturer. Som et resultat av deres vellykkede bruk av det, har flere og flere bedrifter begynt å innse fordelene ved å bruke GraphQL for APIene deres.

Kjenner du allerede REST? GraphQL vil føles kjent.

GraphQL APIer er lettere å arbeide med enn du kanskje tror. Hvis du er vant til å arbeide med REST APIer, er her hvordan kjernekonsepter fra REST oversettes til GraphQL.

FunksjonRESTGraphQL
EndepunktForespørsler gjøres til flere endepunkter for forskjellige handlingerAlle forespørsler gjøres til ett enkelt endepunkt (f.eks. /graphql)
DatahentingBruk GET-metoder på spesifikke endepunkter for å hente dataBruk spørringer for å be om nøyaktig dataene som trengs, noe som reduserer over-henting eller under-henting
Datamodifisering/handlingerBruk HTTP-metoder som POST, PUT, PATCH eller DELETE for å endre eller behandle data.Bruk mutasjoner for å utføre operasjoner (f.eks. opprette parter, beregne landingskostnader)
ResponsformatFaste responsformater returnerer alle forhåndsdefinerte felt, uavhengig av om de trengsFleksible responser tillater spesifisering av nøyaktig hvilke felt som skal inkluderes, noe som reduserer unødvendig dataoverføring (Hvis denne fleksibiliteten føles komplisert, kan du ganske enkelt bruke de forhåndsskrevne spørringseksemplene i dokumentasjonen vår for en REST-lignende opplevelse)
DataforbindelseFlere forespørsler er ofte påkrevd for å hente relaterte dataNestede spørringer gjør det mulig å hente relaterte data i én forespørsel (f.eks. partidetaljers og forsendelsessjekkdetaljer sammen). Brukere kan også bygge arbeidsflyter for å administrere flere mutasjoner innenfor en enkelt GraphQL-forespørsel, noe som reduserer kompleksitet og forbedrer effektivitet

Fordeler med GraphQL

En analogi 

Tenk deg at du er på en restaurant med en meny som lar deg bestille retter nøyaktig slik du liker dem, sammenlignet med en annen restaurant der du bare kan velge fra forhåndsinnstilt måltider. GraphQL er som den første restauranten:

  • Få nøyaktig det du ønsker: Med GraphQL kan du be om nøyaktig dataene du trenger, ikke mer, ikke mindre. Tenk deg at du bare vil ha navnet og prisen på en rett, ikke hele listen over ingredienser. Med REST APIer må du få hele rettdetaljene og ignorere delene du ikke trenger.
  • Lag en tilpasset rett: GraphQL API-en vår kan enkelt kombineres for å lage flere tilpassede løsninger, på samme måte som en buffetrestaurant der du kan lage en unik rett nøyaktig slik du trenger det, ved hjelp av ingredienser de allerede har. Derimot er en REST API som et bakeri med forhåndslagde varer pakket i kurver – du kan bare bestille det som allerede er opprettet, og du kan ikke velge å ta med hjem bare delen du vil.
  • Mindre ventetid: Siden du kan få all informasjonen du trenger i én forespørsel, er det som å be serveren din om å bringe forrett, hovedrett og dessert alt på en gang, i stedet for å vente mellom retter. De fleste REST APIer krever at du sender flere forespørsler for å få forskjellige informasjonsdeler.
  • Enkelt å endre bestillinger: Hvis databehovene til appen din endres, gjør GraphQL det lettere å justere. Du endrer bare spørringen for det du trenger. Med REST, kan det hende du må vente på at kjøkkenet (backend) skal lage en ny rett (endepunkt) for menyen, noe som tar mer tid.

GraphQL tilbyr større fleksibilitet, effektivitet og enkelhet for datahenting enn REST APIer, spesielt når dine behov endres eller vokser.

Hvordan Zonos bruker GraphQL 

Under moderniseringen av plattformen vår de siste par årene, har Zonos valgt å bygge ny funksjonalitet ved hjelp av GraphQL for API-en vår i stedet for REST. Vi bestemte oss for å gjøre dette fordi dataene våre er komplekse og sammenkoblede, omtrent som dataene som førte til at Facebook opprettet GraphQL. Denne kompleksiteten gjør det utfordrende å bygge skalerbare REST APIer fordi måtene som utviklere trenger for å hente og bruke dataene på varierer drastisk mellom implementeringene, og REST er ikke fleksibel.

GraphQL løser dette problemet elegant ved å tillate utviklere som implementerer API-en vår å plukke og velge nøyaktig hvilke data de vil ha og hvordan de får dem. Dette tillater dem å passe det inn i arbeidsflytene sine uten at Zonos trenger å gjøre egendefinert arbeid (mens de venter) for hver situasjon.

Det kombinerte resultatet av å bruke GraphQL og moderniseringene i plattformen vår har gjort API-en vår mer ytelseskraftig, gjort det raskere å integrere Zonos inn i systemene dine, og gjort det mulig for Zonos å levere nye funksjoner raskere.

Bedre funksjoner

Zonos utvikler kontinuerlig nye funksjoner, og GraphQL er den første (og vanligvis den eneste) som mottar disse oppdateringene. Derimot anses REST APIene våre som utdaterte og kan ikke få tilgang til mange av de nye funksjonene våre.

Eksempler på funksjoner begrenset til GraphQL:

  • Inclusive pricing
  • Labels API
  • Ny Checkout og Hello
  • Eskelstørrelser i API-respons
  • Dashboard-rapportering
  • Mulighet til å forespørre et DDP-tilbud hvis det er mulig, men fortsatt returnere et DDU-tilbud hvis DDP er utilgjengelig for det landet med det servicenivået
  • Detaljert sammenbrudd av tolls-, avgifts- og gebyrer (varenivåinformasjon, spesifikke gebyrer) – Dashboard drives av GraphQL og viser disse dataene for alle butikker, men REST API-responsen inkluderer ikke dette detaljnivået
  • Testmodus (kommer snart)
Bestill en demo

Var denne siden nyttig?