Mester REST APIer: 40 vanlige intervjuspørsmål & svar

Et API, forkortelse for Application Programming Interface, fungerer som en inngangsport. Det muliggjør for applikasjoner å få tilgang til ressurser fra andre applikasjoner. Tenk på det som en bro som kobler sammen ulike software-komponenter.

En viktig fordel ved å bruke et API er at det gir tilgang til tredjepartsapplikasjoner uten at disse får direkte tilgang til alle dataene i din applikasjon. API-et fungerer som et filter, og tredjeparter får kun tilgang til den informasjonen du bevisst velger å eksponere gjennom API-et.

Applikasjonen, eller brukeren, som ønsker å hente data, kalles en klient, mens applikasjonen som serverer disse dataene, kalles en server. Dette er et grunnleggende klient-server-forhold som ofte brukes i programvareutvikling.

APIer er sentrale i dagens programvarearkitektur. Enten du sikter mot en stilling som frontend-, backend-, fullstack- eller nettverksingeniør, vil du sannsynligvis støte på spørsmål om APIer i jobbintervjuer. Forståelse av hvordan de fungerer, er derfor essensielt.

La oss derfor se nærmere på noen av de vanligste intervjuspørsmålene knyttet til REST APIer.

Hva er REST?

REST, som står for Representational State Transfer, er en arkitektonisk stil som setter visse rammer for hvordan APIer skal fungere. APIer som følger disse prinsippene, kalles RESTful APIer. Det er viktig å understreke at REST ikke er en protokoll eller en standard, men snarere et sett med retningslinjer som kan implementeres på ulike måter.

Denne fleksibiliteten og friheten for utviklere gjør REST til et populært valg for utvikling av APIer. Her er noen av de fundamentale prinsippene for en REST-arkitektur:

  • Separasjon av klient og server: I et RESTful API skal klienten kun kommunisere med serveren ved å be om data gjennom en URI (Uniform Resource Identifier). Serveren skal på sin side ikke endre klientens tilstand på noen måte.
  • Tilstandsløshet: Hver forespørsel behandles uavhengig av tidligere eller fremtidige forespørsler. Dette betyr at serveren ikke lagrer informasjon om tidligere interaksjoner. En forespørsel behandles og avsluttes uten å påvirke andre forespørsler.
  • Lagdelt arkitektur: Verken klienten eller serveren skal være avhengig av om en forespørsel sendes direkte til kilden, eller via mellomliggende applikasjoner. De er kun opptatt av svaret på forespørselen.
  • Bufring: Data og svar kan lagres (bufres) på både klient- og serversiden for å forbedre ytelse og skalérbarhet. Dette kan redusere antall direkte forespørsler til serveren og dermed redusere belastningen.

Hva er noen viktige kjennetegn ved REST?

Her er noen av de viktigste egenskapene til REST:

  • Fleksibilitet: Et REST-API er fleksibelt fordi man kan bytte server uten å påvirke hvordan API-et oppfører seg for en spesifikk forespørsel. Man kan også utvide API-et med nye endepunkter for ulike datatyper.
  • Skalerbarhet: Bruk av bufring bidrar til økt skalerbarhet ved å redusere serverbelastningen og ventetiden for klienter som spør etter samme data.
  • Autorisasjon: Gjennom autorisasjonshodet kan klienten angi legitimasjon som serveren bruker til å verifisere tilgang til ressurser.
  • Tilstandsløshet: Som nevnt er tilstandsløshet en grunnleggende egenskap ved REST. Forespørsler er isolert fra hverandre, og avsluttes umiddelbart etter at de er behandlet.

Hva er ressurser i en REST-arkitektur?

Ressurser er de enhetene som operasjoner som henting, oppdatering og sletting utføres på. De utgjør de grunnleggende byggeklossene i REST-arkitekturen. Man kan tenke på det som ting eller objekter man ønsker å manipulere.

I en nettbutikk kan for eksempel produkter, brukere og metadata betraktes som ressurser, da disse kan hentes, oppdateres eller slettes. Disse ressursene kan overføres mellom applikasjoner via API-et.

Nevn noen fordeler og ulemper med en REST API.

Fordelene med REST APIer inkluderer:

  • Enkel implementering.
  • Lett å håndtere ressurser.
  • Skalerbarhet på grunn av klient-server-arkitektur.
  • Støtte for ulike dataformater som XML og JSON.

Ulempene er:

  • Manglende mulighet til å opprettholde tilstand mellom forespørsler.
  • Den faktiske opprinnelsen til en ressurs kan være uklar på grunn av lagdelt arkitektur.
  • Ikke optimalt for komplekse spørringer eller forespørsler.

Definer REST-mal.

En REST-mal er et verktøy, ofte en klient, som forenkler bruken av REST API-er i Spring-rammeverket. Den skjuler den underliggende koden som ellers kreves for å kommunisere med REST API-et.

Hva er RESTful?

RESTful APIer eller tjenester er grensesnitt som følger prinsippene i REST (Representational State Transfer) arkitekturen. De fungerer typisk ved hjelp av protokoller som HTTP.

Hva er RESTful Web Services?

RESTful webtjenester er spesifikt designet for å fungere optimalt på nettet. Ved å følge RESTs arkitektoniske prinsipper, som enhetlig grensesnitt, lagdeling og tilstandsløshet, oppnår man egenskaper som ytelse og skalerbarhet, som er viktige for effektiv nettjenesteytelse.

Hvordan kan du teste RESTful Web Services?

For å teste en RESTful webtjeneste kan du bruke en REST-klient som Postman eller Thunder Client. Disse verktøyene lar deg sende forespørsler til webtjenesten og analysere svarene. En god forståelse av svarene er en sentral del av testingen.

Ved testing av komplekse APIer med mange endepunkter er det ofte nødvendig å bryte ned testingen i enhetstester, integrasjonstester, ytelsestester og ende-til-ende-tester.

Nevn noen funksjoner i RESTful Web Services.

Viktige funksjoner i RESTful webtjenester inkluderer:

  • Støtte for forskjellige medietyper som JSON og XML.
  • Skalerbarhet.
  • Isolering av klient og server.
  • Fleksibilitet.

Definer RESTful Root Resource Classes.

Rotressursklasser er vanlige Java-objekter (POJO) som enten er markert med @Path eller har minst én metode markert med @Path eller en forespørselsmetodedesignator som @GET, @POST, @PUT eller @DELETE. Disse klassene fungerer som inngangspunkter for API-et.

Hva er URI?

URI, som står for Uniform Resource Identifier, er en sekvens av tegn som brukes for å identifisere ressurser i et API. Den angir ressursens navn eller plassering, uavhengig av en bestemt metode eller teknikk.

Hva er statsløshet i hvile?

Statsløshet, som nevnt, er et grunnleggende prinsipp der ingen tilstand opprettholdes mellom forespørsler. Hver forespørsel behandles uavhengig, og avsluttes etter at den er besvart.

Hva er JAX-RS?

JAX-RS er en Java API som forenkler utvikling av applikasjoner som benytter REST-arkitekturen. Det er et standardisert verktøy for å bygge RESTful applikasjoner i Java.

Hva er nøkkelkommentarene i JAX-RS API?

Kommentarer (annotations) i JAX-RS brukes for å dekorere Java-klasser og metoder, og definerer ressurser og tilhørende operasjoner. Noen vanlige kommentarer inkluderer:

  • @GET: For GET-forespørsler i HTTP.
  • @POST: For POST-forespørsler i HTTP.
  • @Path: For å angi den relative banen til en Java-klasse.
  • @QueryParam: For å referere til spørringsparametere i URI-en.

Hva er noen nøkkelfunksjoner i JAX-RS API?

Funksjonene i JAX-RS inkluderer:

  • Bufring på klientsiden.
  • Hurtigbufring på serversiden.
  • Tilpasning av spørrestrenger.
  • Kjøretidskommentarer.

Hvordan kan JAX-RS-applikasjonene konfigureres?

En JAX-RS-applikasjon består typisk av minst én ressursklasse pakket i en WAR-fil. Base-URI-en kan konfigureres enten ved bruk av @ApplicationPath-kommentaren i en underklasse av javax.ws.rs.core.Application eller ved å bruke servlet-mapping-taggen i WARs web.xml-beskrivelsesfil.

Hva er JAX-WS og JAX-RS?

JAX-WS er en Jakarta XML Web Services API som brukes for å utvikle APIer med Simple Object Access Protocol (SOAP) – en XML-basert meldingsprotokoll. JAX-RS derimot er en Java API for å lage webtjenester som bruker REST-arkitekturen.

Hva er HTTP-statuskoder?

HTTP-statuskoder er måten serveren kommuniserer statusen på svaret til klienten. De finnes i svarhodene som serveren sender. Klienten kan bruke disse kodene for å forstå om forespørselen var vellykket, mislyktes eller om det er noen problemer med svaret.

Her er noen vanlige statuskoder for HTTP:

  • 200 – «OK». Forespørselen ble vellykket behandlet.
  • 404 – «Ikke funnet». En ressurs ble ikke funnet på serveren.
  • 500 – «Intern serverfeil». Serveren klarte ikke å generere et gyldig svar.
  • 503 – «Tjenesten utilgjengelig». Serveren kan for øyeblikket ikke behandle forespørsler, ofte på grunn av overbelastning eller vedlikehold.

Hva er HTTP-metoder?

HTTP-metoder brukes for å utføre spesifikke operasjoner på en gitt ressurs i et API. For eksempel vil en GET-metode hente data, mens en POST-metode oppdaterer data. Disse metodene definerer handlingen man ønsker å utføre.

Ofte brukte HTTP-metoder inkluderer:

  • GET: Henter data fra serveren.
  • POST: Sender nye data til serveren for å opprette eller oppdatere en ressurs.
  • DELETE: Sletter en spesifikk ressurs.
  • PATCH: Endrer deler av en ressurs.

Hvordan fungerer grunnleggende HTTP-autentisering?

Autentisering er prosessen med å verifisere identiteten til en klient. I HTTP skjer dette gjennom et autorisasjonshode som sendes av klienten. Dette hodet inneholder brukernavn/ID og passord, som serveren bruker for å godkjenne tilgangen.

Når du bruker HTTP-autentisering er det viktig at kanalen som legitimasjonen passerer gjennom er kryptert. Det anbefales å bruke HTTPS, som integrerer SSL-laget, for å sikre denne kanalen.

Hva er kjernekomponentene i HTTP-forespørsel?

En HTTP-forespørsel består av følgende komponenter:

  • Forespørselslinje: Første linje med HTTP-metode, bane/endepunkt og HTTP-versjonsnummer.
  • Overskrifter: Metadata for forespørselen.
  • Brødtekst (valgfritt): Den faktiske meldingen i forespørselen (ofte brukt med POST-forespørsler).

Hva er kjernekomponentene i HTTP-respons?

Et HTTP-svar består av:

  • Status: HTTP-statuskode fra serveren.
  • Overskrifter: Gir ytterligere informasjon om svaret.
  • Melding: Faktiske data som sendes fra serveren til klienten.

Hva er forskjellen mellom REST og AJAX?

AJAX er en klient som kan brukes til å kommunisere med RESTful APIer gjennom asynkrone JavaScript-forespørsler. REST derimot er en arkitektur for å utvikle APIer. Kort sagt, AJAX er et verktøy for å sende forespørsler, mens REST er en måte å bygge selve API-et på.

Hva er forskjellen mellom SOAP og REST?

REST er en arkitektur med få begrensninger, mens SOAP er en protokoll med strenge krav. REST er mer fleksibel og enklere å bruke enn SOAP, som bruker XML-baserte meldinger. REST kan bruke flere dataformater, som JSON, og er generelt sett lettere og raskere. SOAP har derimot innebygd sikkerhet, men dette gjør også tjenestene mer komplekse og tunge.

Hva er forskjellen mellom PUT og POST?

POST brukes for å sende data til serveren og kan føre til flere opprettelser av samme ressurs hvis den sendes flere ganger. PUT derimot brukes for å oppdatere en ressurs på serveren og er idempotent. Det vil si at flere PUT-forespørsler ikke vil ha flere effekter. PUT oppretter også en ressurs hvis den ikke allerede eksisterer, ellers oppdateres den eksisterende.

Hva er en nyttelast?

I et REST API er nyttelasten selve meldingen som sendes fra klienten til serveren. Det er dataene man ønsker å sende og motta svar på.

Hva er den maksimale nyttelaststørrelsen som kan sendes i postmetoder?

HTTP-protokollen definerer ingen standardgrense. Maksimal størrelse kan avhenge av begrensningene på klient- eller serversiden.

Når du oppretter URI, hva er de beste fremgangsmåtene som må følges?

Viktige ting å huske på når man designer URIer:

  • Unngå filutvidelser.
  • Vær konsistent i alle URIer.
  • Del URIene inn i domener og underdomener.
  • Bruk bindestrek eller understrek for å skille ord.
  • Bruk skråstrek for å indikere hierarki.
  • Bruk riktig koding.
  • Gjør URIen lesbar.

Hva er idempotente metoder?

Idempotente HTTP-metoder har samme effekt på serveren uavhengig av antall identiske forespørsler som sendes. For eksempel vil flere DELETE-forespørsler på samme ressurs ikke forandre resultatet. Noen idempotente metoder inkluderer PUT, DELETE, GET, HEAD og OPTIONS.

Hva er Postman?

Postman er et API-utviklingsverktøy for å utvikle, endre og teste APIer. Det gir mange funksjoner for rask API-utvikling og testing uten å kreve en egen klient.

Cache-Control-overskriften angir instruksjoner for hvordan caching skal fungere i nettlesere og servere. Den forteller nettleseren eller serveren hva som skal bufres og hvor lenge.

Cache-Control-overskriften kan inneholde direktiver som:

  • maks-alder
  • ingen cache
  • privat
  • offentlig
  • ingen butikk
  • uforanderlig

Definer meldinger i RESTful Web Services.

Meldinger refererer til kommunikasjonen mellom klienten og serveren gjennom HTTP-forespørsler og -svar.

Hva er forskjellen mellom monolittisk, SOA- og mikrotjenesterarkitektur?

Monolitisk arkitektur samler all funksjonalitet på ett sted, mens SOA (Service-Oriented Architecture) benytter separate tjenester for ulike deler av applikasjonen. Mikrotjenesterarkitektur er lik SOA, men med mer autonome applikasjoner som kommuniserer med hverandre gjennom APIer.

Hvordan fungerer mikroservicearkitektur?

I en mikrotjenestearkitektur er applikasjonene delt inn i små, uavhengige enheter som kommuniserer gjennom APIer. Denne arkitekturen gir smidighet, fleksibilitet, skalerbarhet og mulighet for å bruke ulike teknologier for de forskjellige tjenestene.

Hva er CRUD?

CRUD står for Create, Read, Update, Delete. Dette er de grunnleggende operasjonene som kan utføres på en gitt ressurs. Et API som støtter disse operasjonene kalles et CRUD API.

Hva er caching?

Caching er en teknikk for å lagre svar eller forespørsler midlertidig, for raskere tilgang senere. Dette reduserer behovet for gjentatte forespørsler over nettverket, spesielt for klienter som ber om de samme dataene flere ganger.

Hva er bruken av @RequestMapping?

@RequestMapping er en annotasjon i Spring-rammeverket som brukes til å knytte nettforespørsler til spesifikke behandlerklasser eller metoder.

Hva gjør @PathVariable?

@PathVariable-annotasjonen i Spring-rammeverket trekker ut verdien av malvariabler i URL-en og tilordner disse til en metodevariabel.

Definer HttpMessageConverter.

HttpMessageConverter konverterer HTTP-forespørsler (eller deler av dem) til typer som trengs som argumenter for behandlermetoder, eller konverterer verdien returnert av metoden for å danne et HTTP-svar.

Noen verktøy som kan hjelpe deg med API-testing er:

  • Postman
  • SoapUI
  • REST Sharp
  • Katalon
  • ReadyAPI
  • Apigee

Siste ord

APIer, spesielt REST APIer, er essensielle i dagens internettbaserte verden. Deres popularitet skyldes at de er relativt enkle å utvikle og bruke.

Hvis du skal i intervju, bør du forberede deg godt på spørsmål knyttet til REST APIer som de vi har gått igjennom her.

Du kan også se på hvordan du kan hente data fra en nettside ved hjelp av tipsbilk.net sin Web Scraping API.