REST-API og GraphQL-API: En sammenligning

REST (Representational State Transfer) og GraphQL er to populære tilnærminger til å designe API-er, hver med sine egne styrker og bruksområder. For eksempel benytter Visma.net og Microsoft Dynamics 365 Business Central REST-API mens Business NXT og Xledger benytter GraphQL.

IntegrasjonsPartner har jobbet i lang tid med EDI og integrasjoner hvor det er benyttet både REST-API og GraphQL-API. Vi tenker det derfor kan det være på tide med en liten sammenlikning mellom de to teknologiene.

REST

REST, eller Representational State Transfer, er en arkitektonisk stil for utvikling av webtjenester som har blitt en standard i moderne webutvikling. RESTful API-er (Application Programming Interfaces) gir en enkel og skalerbar måte å koble sammen systemer og muliggjør kommunikasjon mellom klienter og servere.

1. Ressurser: I REST-API-design representeres data og funksjonalitet som ressurser. En ressurs kan være hva som helst fra en enkel dataenhet til en kompleks samling av objekter.

2. http-metoder: REST bruker standard HTTP-metoder som GET, POST, PUT, og DELETE for å utføre operasjoner på ressursene. Dette gir en intuitiv tilnærming til datahåndtering.

3. URI (Uniform Resource Identifier): Hver ressurs i et REST-API identifiseres entydig av en URI. URI-en fungerer som en adresse som tillater klienter å få tilgang til og manipulere ressursene.

4. Representasjon: Dataene som sendes mellom klient og server, representert av ressursen, kan være i forskjellige formater som JSON eller XML. Dette gjør det enkelt for klienter og servere å forstå og tolke dataene.

5. Statelessness: REST-API-er er såkalt «stateless», noe som betyr at hver forespørsel fra klienten til serveren inneholder all nødvendig informasjon for å forstå og behandle forespørselen. Serveren beholder ingen tilstand om klientens tilstand mellom forespørslene.

6. HATEOAS (Hypermedia as the Engine of Application State): Dette prinsippet oppfordrer til å inkludere navigasjonslenker i API-responsen, slik at klienter dynamisk kan utforske og forstå tilgjengelige aksjoner.

REST-API-er er bredt brukt i utviklingen av webapplikasjoner og tjenester på grunn av deres enkelhet, skalerbarhet og evne til å fungere godt over ulike plattformer. Selv om det finnes andre tilnærminger som GraphQL, fortsetter REST å være en pålitelig og utbredt teknologi i dagens webutvikling.

 

GraphQL: Fleksibel datahenting

GraphQL er en kraftig og moderne tilnærming til API-design som gir utviklere økt kontroll over datahenting og muligheten til å effektivisere kommunikasjonen mellom klienter og servere. Utviklet av Facebook, har GraphQL raskt blitt en populær teknologi i webutviklingsmiljøet.

Hovedtrekk ved GraphQL:

1. Fleksibel datahenting: En av de mest markante egenskapene til GraphQL er muligheten for klienter å spesifisere nøyaktig hvilke data de trenger. Dette reduserer overføring av unødvendig informasjon og forbedrer ytelsen til applikasjonen.

2. Ett endepunkt: I motsetning til REST-API-er, som vanligvis har flere endepunkter for forskjellige ressurser, har GraphQL bare ett endepunkt. Dette gjør det enkelt å administrere og forstå API-et.

3. Hierarkisk struktur: GraphQL-spørringer følger en hierarkisk struktur som samsvarer med klientens datamodell. Dette gjør det enkelt å forstå og vedlikeholde spørringer, spesielt når det gjelder komplekse relasjoner mellom data.

4. Data i sanntid: GraphQL gir støtte for sanntidsoppdateringer gjennom abonnementer, som gir muligheten til å motta øyeblikkelige oppdateringer når data endres på serveren.

5. Introspeksjon: GraphQL tillater klienter å utforske og forstå API-et dynamisk ved å bruke introspeksjon. Dette gjør det enkelt å utforske tilgjengelige typer, felt og relaterte operasjoner.

6. Hente nøyaktig mengde data: Ved å tillate klienten å spesifisere dataformatet, unngår GraphQL både å hente mer data enn nødvendig (engelsk: «overfetching») og å hente for lite data (engelsk: «underfetching»).

7. Versjonskontroll: GraphQL eliminerer behovet for versjonskontroll ved å tillate tillegg av nye felt uten å påvirke eksisterende klienter. Dette gjør API-et mer fleksibelt og enklere å vedlikeholde over tid.

GraphQL har funnet stor anvendelse i moderne webutvikling, spesielt for komplekse applikasjoner og grensesnitt. Dets evne til å tilpasse seg endringer i krav og tilby skreddersydde datahentingsmuligheter gjør det til et kraftig verktøy for utviklere som søker fleksibilitet og effektivitet i API-design.

 

REST vs. GraphQL

Her er en oppsummert sammenlikning av de to teknologiene:

Datahenting:

· REST: Returnerer alltid en forhåndsdefinert mengde data, som ofte kan være mer enn nødvendig for en spesifikk forespørsel.

· GraphQL: Tillater klienten å spesifisere nøyaktig hvilke data som skal hentes, noe som reduserer overføringsbelastningen og forbedrer ytelsen.

Fleksibilitet:

· REST: Fast struktur og endepunkter, noe som kan føre til å hente for mye eller for lite data enn det som er nødvendig.

· GraphQL: Gir klienten full kontroll over dataformat og tillater nøyaktig henting av ønsket informasjon.

Ved flere forespørsler:

· REST: Krever ofte flere forespørsler for å hente alle nødvendige data, spesielt når relasjoner er komplekse.

· GraphQL: Tillater komplekse forespørsler i én enkelt API-kall, noe som reduserer antall nettverksforespørsler.

Endepunkter:

· REST: Hvert ressursobjekt har sitt eget unike endepunkt.

· GraphQL: Ett enkelt endepunkt for alle forespørsler, noe som forenkler API-strukturen.

Versjonskontroll:

· REST: Ofte avhengig av versjonskontroll for å håndtere endringer i API-strukturen.

· GraphQL: Introduserer fleksibilitet ved å tillate tillegg av nye felt uten å påvirke eksisterende klienter.

Brukervennlighet:

· REST: Enklere forståelse og implementering for enklere scenarier.

· GraphQL: Bedre egnet for komplekse applikasjoner og dynamiske grensesnitt.

I det store bildet er valget mellom REST og GraphQL avhengig av spesifikke behov og bruksområder. REST fortsetter å være en pålitelig tilnærming for mange scenarier, mens GraphQL tilbyr mer fleksibilitet og effektivitet i spesifikke situasjoner.

 

IntegrasjonsPartner har som nevnt god erfaring med begge teknologiene, så for deg som kunde handler det først og fremst om å velge det ERP-systemet som passer best. Og så er det en trygghet i å vite at IntegrasjonsPartner kan levere gode og trygge EDI- og integrasjonsløsninger med driftssikkerhet, overvåking og varsling, uansett valg av teknologi og ERP-system.