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.
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.
Funktion↕
REST↕
GraphQL↕
Endpoint
Anmodninger sendes til flere endpoints for forskellige handlinger
Alle anmodninger sendes til et enkelt endpoint (f.eks. /graphql)
Datahentning
Brug GET-metoder på specifikke endpoints for at hente data
Brug queries til at anmode om præcis de data, der er brug for, og reducere over- eller under-hentning
Datamodifikation/handlinger
Brug 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)
Svarformat
Faste svarformater returnerer alle foruddefinerede felter, uanset om de er nødvendige
Fleksible 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)
Dataforbindelse
Flere anmodninger kræves ofte for at hente relaterede data
Indlejrede 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
Hurtigere svar
GraphQL giver hurtigere svar gennem præcis datahentning, brug af et enkelt endpoint og forbedrede muligheder for batching og caching.
En almindelig udfordring med REST er over- eller under-hentning af data — enten at få for meget unødvendig information eller ikke nok af det, der er brug for, på én gang. GraphQL eliminerer dette ved at tillade anmodninger om præcis det, der er brug for — hverken mere eller mindre. Denne specificitet forbedrer ikke kun performance, men forenkler også processen for dem, der interagerer med API'et, og gør systemet mere effektivt og brugervenligt.
Eksempler på, hvordan dette er nyttigt:
Det giver frontend-udviklere mulighed for at hente præcis de data, de har brug for til deres UI-komponenter, hvilket reducerer antallet af round trips til serveren og forbedrer performance.
Forestil dig, at du vil have en HS-kode-klassificering, cartonization, forsendelsesrating og et landed cost-tilbud på varer i en checkout. Hvis du er integreret via GraphQL API, kan du foretage ét kald med de nødvendige workflows for at få alt, du har brug for (og intet, du ikke har brug for), i ét svar. Med REST API'er skulle du først kalde Classify REST API, derefter Rating REST API separat og til sidst indsætte klassificering og forsendelsesrating i dit tredje kald til Landed Cost REST API. Alle disse REST API'er returnerer al information, de kan, hvilket kræver, at du parser svaret for at finde de data, du har brug for. Denne tidsbesparelse har betydning for at returnere en komplet landed cost hurtigt, før køberen forlader siden.
GraphQL API'er har typisk ét endpoint, i modsætning til REST API'er, som ofte har flere endpoints for forskellige ressourcer og handlinger. Det gør API'et enklere at administrere og forstå.
GraphQL's evne til at batch queries og understøttelse af caching-strategier giver betydelige performanceforbedringer. Disse funktioner reducerer belastningen på netværk og servere, hvilket giver hurtigere og 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. Det giver klarhed over, hvilke data der er tilgængelige, og hvordan de tilgås, hvilket kan forbedre udviklerproduktivitet og reducere fejl. Frontend-teams kan f.eks. udforske grafen for at få præcis det, de har brug for, i stedet for at vente på et nyt REST-endpoint.
Mulighed for at forbedre uden at bryde eksisterende klienter
Tilføjelse af nye funktioner eller ændring af eksisterende i GraphQL forstyrrer ikke nuværende integrationer takket være den fleksible query-struktur. Det sikrer, at forbedringer kan foretages uden at bryde kompatibilitet med eksisterende klienter.
Opdateret dokumentation
Takket være GraphQL's introspection-funktion genereres og opdateres dokumentation automatisk ved hver ændring. Det sikrer, at al information til udviklere er aktuel, hvilket reducerer integrationsproblemer og supporthenvendelser relateret til forældet dokumentation — en udfordring, REST API-dokumentation ofte står over for.
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.
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
Hvorfor GraphQL
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.
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 over- eller under-hentning af data — enten at få for meget unødvendig information eller ikke nok af det, der er brug for, på én gang. GraphQL eliminerer dette ved at tillade anmodninger om præcis det, der er brug for — hverken mere eller mindre. Denne specificitet forbedrer ikke kun performance, men forenkler også processen for dem, der interagerer med API'et, og gør systemet mere effektivt og brugervenligt.
Eksempler på, hvordan dette er nyttigt:
Enkelt endpoint
GraphQL API'er har typisk ét endpoint, i modsætning til REST API'er, som ofte har flere endpoints for forskellige ressourcer og handlinger. Det gør API'et enklere at administrere og forstå.
Batching og caching
GraphQL's evne til at batch queries og understøttelse af caching-strategier giver betydelige performanceforbedringer. Disse funktioner reducerer belastningen på netværk og servere, hvilket giver hurtigere og 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. Det giver klarhed over, hvilke data der er tilgængelige, og hvordan de tilgås, hvilket kan forbedre udviklerproduktivitet og reducere fejl. Frontend-teams kan f.eks. udforske grafen for at få præcis det, de har brug for, i stedet for at vente på et nyt REST-endpoint.
Mulighed for at forbedre uden at bryde eksisterende klienter
Tilføjelse af nye funktioner eller ændring af eksisterende i GraphQL forstyrrer ikke nuværende integrationer takket være den fleksible query-struktur. Det sikrer, at forbedringer kan foretages uden at bryde kompatibilitet med eksisterende klienter.
Opdateret dokumentation
Takket være GraphQL's introspection-funktion genereres og opdateres dokumentation automatisk ved hver ændring. Det sikrer, at al information til udviklere er aktuel, hvilket reducerer integrationsproblemer og supporthenvendelser relateret til forældet dokumentation — en udfordring, REST API-dokumentation ofte står over for.
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 vil have dem, sammenlignet med en anden restaurant, hvor du kun kan vælge fra faste menuer. GraphQL er som den første restaurant:
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:
Var denne side nyttig?