DOCS

Hvorfor GraphQL

Hvorfor GraphQL

Opdag hvorfor vi anbefaler at integrere via GraphQL frem for REST.

Hos Zonos tilbyder vi to hovedtyper af API'er til integration: GraphQL og REST. Selvom REST API'er har eksisteret længere og måske er mere velkendte for mange, har vi skiftet til GraphQL for at muliggøre 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 opbygning af grænseflader oven på dem. I modsætning til at behandle data som separate, selvstændige enheder, viser GraphQL, hvordan datapunkter forbindes og relaterer til hinanden, hvilket gør det nemt at anmode om og modtage information.

Tænk på GraphQL som et forespørgselssprog, der giver dig mulighed for at tale med API'en, som om du talte direkte til databasen. Ved at bruge GraphQL kan du komme så tæt på databasen som muligt, så du kan vælge og vælge, hvilke data du vil have, og hvordan du får dem, hvilket giver en enorm præstationsfordel.

GraphQL blev skabt af Facebook for at løse problemet med skalering med komplekse datastrukturer. Som et resultat af deres succesfulde adoption af det, er flere og flere virksomheder begyndt at indse fordelene ved at bruge GraphQL til deres API'er.

Nøgleforskelle fra REST

GraphQL API'er er lettere at arbejde med, end du måske tror. Hvis du er vant til at arbejde med REST API'er, er her de grundlæggende forskelle, du skal huske på:

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 forespørgsler til at anmode om præcist de data, der er nødvendige, hvilket reducerer overhentning eller underhentning
Datamodifikation/handlingerBrug HTTP metoder som POST, PUT, PATCH eller DELETE til at ændre eller behandle data.Brug mutationer 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 tillader specifikation af præcist de felter, der skal inkluderes, hvilket reducerer unødvendig datatransmission
DatatilslutningFlere anmodninger er ofte nødvendige for at hente relaterede dataNæstede forespørgsler muliggør hentning af relaterede data i en enkelt anmodning (f.eks. partydetaljer og forsendelsesgenstande sammen). Brugere kan også opbygge arbejdsgange til at håndtere flere mutationer inden for en enkelt GraphQL-anmodning, hvilket reducerer kompleksitet og forbedrer effektivitet

Fordele ved GraphQL

Hurtigere svar

GraphQL giver hurtigere svar gennem præcis datahentning, brug af et enkelt endpoint og forbedrede muligheder for batching og caching.

Præcis datahentning

En almindelig udfordring med REST er overhentning eller underhentning af data—enten at få for meget unødvendig information eller ikke nok af det, der er nødvendigt på én gang. GraphQL eliminerer dette ved at tillade anmodninger om præcist, hvad der er nødvendigt—intet mere, intet mindre. Denne specificitet forbedrer ikke kun ydeevnen, men forenkler også processen for dem, der interagerer med API'en, hvilket gør systemet mere effektivt og brugervenligt.

Eksempler på, hvordan dette er nyttigt:

  • Dette giver frontend-udviklere mulighed for at hente præcis de data, de har brug for til deres UI-komponenter, hvilket reducerer antallet af rundrejser til serveren og forbedrer ydeevnen.
  • Forestil dig, at du vil have en HS-kodeklassifikation, kartonisering, forsendelsesvurdering og landed cost tilbud på varer i en checkout. Hvis du er integreret via GraphQL API, kan du lave et enkelt kald med de nødvendige arbejdsgange for at få alt, hvad du har brug for (og intet, du ikke har brug for) i et enkelt svar. I modsætning hertil, med REST API'er, ville du først skulle kalde Classify REST API, derefter kalde Rating REST API separat bagefter, og til sidst indsætte den klassifikation og forsendelsesvurdering i dit tredje kald til Landed Cost REST API. Alle disse REST API'er ville returnere hver eneste information, de kan, hvilket får dig til at skulle gennemgå svaret for de data, du har brug for. Denne besparelse i hastighed har en indvirkning på at returnere en komplet landed cost hurtigt, før køberen forlader.

Et enkelt endpoint

GraphQL API'er har typisk et enkelt endpoint, i modsætning til REST API'er, som ofte har flere endpoints for forskellige ressourcer og handlinger. Dette gør det enklere at administrere og forstå API'en.

Batching og caching

GraphQL's evne til at batche forespørgsler og dets støtte til caching-strategier fører til betydelige præstationsforbedringer. Disse funktioner reducerer belastningen på netværk og servere, hvilket oversættes til hurtigere, mere pålidelige interaktioner for brugerne.

Veldefinerede skemaer

GraphQL API'er er baseret på et stærkt typet skema. Dette skema definerer strukturen af de tilgængelige data og de operationer, der kan udføres. Dette giver klarhed over, hvilke data der er tilgængelige, og hvordan man får adgang til dem, hvilket kan forbedre udviklerproduktiviteten og reducere fejl. For eksempel kan frontend-teams udforske grafen for at få præcis det, de har brug for, i stedet for at vente på et nyt REST endpoint.

Evne til at forbedre uden at bryde eksisterende klienter

At tilføje nye funktioner eller ændre eksisterende i GraphQL forstyrrer ikke nuværende integrationer, takket være dens fleksible forespørgselsstruktur. Denne evne sikrer, at forbedringer kan foretages uden at bryde kompatibiliteten med eksisterende klienter.

Opdateret dokumentation

Takket være GraphQL's introspektionsfunktion genereres dokumentationen automatisk og opdateres med hver ændring. Dette sikrer, at al information, der gives til udviklere, er aktuel, hvilket reducerer integrationsproblemer og supportanmodninger relateret til forældet dokumentation—en udfordring, der ofte opleves med REST API-dokumentation.

Gennemgå vores GraphQL dokumentation og vores REST dokumentation for at se forskellen.

En analogi 

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

  • Få præcis hvad du ønsker: Med GraphQL kan du bede om præcis de data, du har brug for, ikke mere, ikke mindre. Forestil dig, at du kun ønsker navnet og prisen på en ret, ikke hele listen over ingredienser. Med REST API'er skal du have hele retens detaljer og ignorere de dele, du ikke har brug for.
  • Sammensæt en tilpasset ret: Vores GraphQL API'er kan nemt kombineres for at skabe mere tilpassede løsninger, ligesom en buffet-restaurant, hvor du kan skabe en unik ret præcis som du har brug for, ved at bruge ingredienser, de allerede har. I kontrast hertil er en REST API som et bageri med færdiglavede varer pakket i kurve—du kan kun bestille det, der allerede er blevet lavet, og du kan ikke vælge kun at tage den del, du ønsker.
  • Mindre ventetid: Da du kan få alle de oplysninger, du har brug for, i en enkelt anmodning, er det som at bede din tjener om at bringe din 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 oplysninger.
  • Let at ændre bestillinger: Hvis din apps databehov ændrer sig, gør GraphQL det lettere at justere. Du ændrer bare forespørgslen for hvad du har brug for. Med REST skal du måske vente på, at køkkenet (backend) opretter et nyt måltid (endpoint) til menuen, hvilket tager længere tid.

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

Hvordan Zonos bruger GraphQL 

Mens vi moderniserede vores platform i løbet af de sidste par år, har Zonos valgt at bygge ny funktionalitet ved hjælp af GraphQL til vores API i stedet for REST. Vi besluttede at gøre dette, fordi vores data er komplekse og sammenkoblede, meget lig de data, der fik Facebook til at skabe GraphQL. Denne kompleksitet gør det udfordrende at bygge skalerbare REST API'er, fordi måderne, udviklere har brug for at hente og bruge dataene, varierer dramatisk mellem implementeringer, og REST er ikke fleksibel.

GraphQL løser elegant dette problem ved at tillade udviklere, der implementerer vores API, at vælge præcis hvilke data de ønsker, og hvordan de får dem. Dette gør det muligt for dem at tilpasse det til deres arbejdsgange uden at Zonos skal lave specialarbejde (mens de venter) for hver situation.

Det samlede resultat af at bruge GraphQL og moderniseringerne i vores platform har gjort vores API mere performant, gjort integrationen 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 normalt eneste) til at modtage disse opdateringer. I kontrast hertil betragtes vores REST API'er som end-of-life og kan ikke få adgang til mange af vores nye funktioner.

Eksempler på funktioner, der er begrænset til GraphQL:

  • Inclusive pricing
  • Labels API
  • Ny Checkout og Hello
  • Kasse stø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 land med det serviceniveau
  • Detaljeret opdeling af afgifter, skatter og gebyrer (vare-niveau information, specifikke gebyrer)—Dashboardet er drevet af GraphQL og viser disse data for alle butikker, men REST API-svaret inkluderer ikke dette niveau af detaljer
  • Testtilstand (kommer snart)

Var denne side nyttig?