DOCS

Hvorfor GraphQL

Opdag, hvorfor vi anbefaler integration via GraphQL frem for REST.

Hos Zonos tilbyder vi to hovedtyper API'er til integration: GraphQL og REST. Selvom REST API'er har eksisteret længere og kan være mere velkendte for mange, er vi gået over til GraphQL for at give mere fleksibilitet og hurtigere innovation. Selvom begge stadig understøttes, forklarer denne guide, hvorfor GraphQL ikke kun er fremtiden for vores integrationer, men også fremtiden for integrationer generelt — og et mere kraftfuldt værktøj til at imødekomme dine behov i dag.

Hvad er GraphQL? 

GraphQL er en alternativ måde at kommunikere med API'er på, som er særligt velegnet til komplekse datastrukturer og til at bygge interfaces ovenpå dem. I modsætning til at behandle data som separate, selvstændige enheder viser GraphQL, hvordan dataelementer hænger sammen og relaterer til hinanden, hvilket gør det nemt at anmode om og modtage information.

Tænk på GraphQL som et forespørgselssprog, der lader dig tale med API'et, som om du talte direkte med databasen. GraphQL giver dig mulighed for at komme så tæt på databasen som muligt og vælge præcis, hvilke data du vil have og hvordan du får dem — med en massiv performancefordel.

GraphQL blev skabt af Facebook for at løse problemet med at skalere med komplekse datastrukturer. Som følge af deres succesfulde adoption har flere og flere virksomheder indset fordelene ved GraphQL til deres API'er.

Kender du allerede REST? GraphQL føles velkendt.

GraphQL API'er er nemmere at arbejde med, end du måske tror. Hvis du er vant til REST API'er, sådan oversættes kernebegreber fra REST til GraphQL.

FunktionRESTGraphQL
EndpointAnmodninger sendes til flere endpoints for forskellige handlingerAlle anmodninger sendes til et enkelt endpoint (f.eks. /graphql)
DatahentningBrug GET-metoder på specifikke endpoints for at hente dataBrug queries til at anmode om præcis de data, der er brug for, og reducere over- eller under-hentning
Datamodifikation/handlingerBrug HTTP-metoder som POST, PUT, PATCH eller DELETE til at ændre eller behandle data.Brug mutations til at udføre operationer (f.eks. oprette parter, beregne landed costs)
SvarformatFaste svarformater returnerer alle foruddefinerede felter, uanset om de er nødvendigeFleksible svar giver mulighed for at specificere præcis de felter, der skal inkluderes, og reducere unødvendig dataoverførsel (Hvis denne fleksibilitet føles kompliceret, brug blot de forudskrevne query-eksempler i vores dokumentation for en REST-lignende oplevelse)
DataforbindelseFlere anmodninger kræves ofte for at hente relaterede dataIndlejrede queries gør det muligt at hente relaterede data i én anmodning (f.eks. partsdetaljer og forsendelsesvarer sammen). Brugere kan også bygge workflows til at håndtere flere mutations i én GraphQL-anmodning, hvilket reducerer kompleksitet og forbedrer effektiviteten

Fordele ved GraphQL

En analogi 

Forestil dig, at du er på en restaurant med en menu, der lader dig bestille retter præcis, som du vil have dem, sammenlignet med en anden restaurant, hvor du kun kan vælge fra faste menuer. GraphQL er som den første restaurant:

  • Få præcis det, du vil have: Med GraphQL kan du anmode om præcis de data, du har brug for — hverken mere eller mindre. Forestil dig, at du kun vil have navn og pris på en ret, ikke hele ingredienslisten. Med REST API'er skal du hente hele retdetaljerne og ignorere de dele, du ikke har brug for.
  • Sammensæt en skræddersyet ret: Vores GraphQL API kan nemt kombineres til mere skræddersyede løsninger, ligesom en buffet-restaurant, hvor du kan skabe en unik ret præcis som du har brug for den, med ingredienser, de allerede har. En REST API er derimod som en bageri med færdiglavede varer pakket i kurve — du kan kun bestille det, der allerede er lavet, og du kan ikke vælge kun at tage den del, du vil have med hjem.
  • Mindre ventetid: Da du kan få al den information, du har brug for, i én anmodning, er det som at bede tjeneren bringe forret, hovedret og dessert på én gang i stedet for at vente mellem retterne. De fleste REST API'er kræver, at du sender flere anmodninger for at få forskellige informationer.
  • Nemt at ændre bestillinger: Hvis appens databehov ændrer sig, gør GraphQL det nemmere at justere. Du ændrer bare query'en for det, du har brug for. Med REST skal du måske vente på, at køkkenet (backend) laver en ny ret (endpoint) til menuen, hvilket tager længere tid.

GraphQL giver mere fleksibilitet, effektivitet og enkelhed til at hente data end REST API'er — især når dine behov ændrer sig eller vokser.

Sådan bruger Zonos GraphQL 

Under moderniseringen af vores platform de seneste par år har Zonos valgt at bygge ny funktionalitet med GraphQL til vores API i stedet for REST. Vi gjorde det, fordi vores data er komplekse og sammenhængende — ligesom de data, der fik Facebook til at skabe GraphQL. Denne kompleksitet gør det udfordrende at bygge skalerbare REST API'er, fordi måden, udviklere skal hente og bruge data på, varierer dramatisk mellem implementeringer, og REST er ikke fleksibelt.

GraphQL løser dette problem elegant ved at lade udviklere, der implementerer vores API, vælge præcis, hvilke data de vil have og hvordan de får dem. Det gør det muligt at passe ind i deres workflows uden, at Zonos skal lave tilpasset arbejde (mens de venter) for hver situation.

Den kombinerede effekt af GraphQL og moderniseringerne i vores platform har gjort vores API mere performant, gjort integration af Zonos i dine systemer hurtigere og gjort det muligt for Zonos at levere nye funktioner hurtigere.

Bedre funktioner

Zonos udvikler løbende nye funktioner, og GraphQL er den første (og som regel eneste), der modtager disse opdateringer. Vores REST API'er betragtes derimod som end-of-life og kan ikke tilgå mange af vores nye funktioner.

Eksempler på funktioner begrænset til GraphQL:

  • Inclusive pricing
  • Labels API
  • New Checkout and Hello
  • Kassestørrelser i API-svar
  • Dashboard-rapportering
  • Mulighed for at anmode om et DDP-tilbud, hvis muligt, men stadig returnere et DDU-tilbud, hvis DDP ikke er tilgængeligt for det pågældende land med det serviceniveau
  • Detaljeret opdeling af told, skatter og gebyrer (information på vareniveau, specifikke gebyrer) — Dashboard drives af GraphQL og viser disse data for alle butikker, men REST API-svaret indeholder ikke dette detaljeringsniveau
  • Test mode (kommer snart)
Book en demo

Var denne side nyttig?