40 Често постављана питања и одговори на интервјуу за РЕСТ АПИ [2023]

API, odnosno Interfejs za programiranje aplikacija (Application Programming Interface), predstavlja ključni element u povezivanju različitih softverskih komponenti. On deluje kao posrednik koji omogućava aplikacijama da komuniciraju i dele resurse.

Prednost upotrebe API-ja ogleda se u tome što se aplikacijama trećih strana ne dozvoljava direktan pristup svim podacima. Umesto toga, one dobijaju pristup samo onim podacima koji su namerno izloženi putem API-ja.

U komunikaciji putem API-ja, aplikacija koja traži podatke naziva se klijent, dok se aplikacija koja pruža te podatke naziva server.

API-ji su postali neizostavni deo svake moderne softverske arhitekture. Bez obzira da li ste zainteresovani za razvoj front-enda, back-enda, full-stack ili mrežni inženjering, suočićete se sa brojnim pitanjima vezanim za API-je.

Stoga, istražimo neka od najčešćih pitanja koja se postavljaju na intervjuima u vezi sa REST API-jima.

Šta je REST?

REST (Representational State Transfer) je arhitektonski stil koji postavlja određene smernice za dizajn API-ja. API-ji koji slede principe REST-a nazivaju se RESTful API-ji. Važno je naglasiti da REST nije protokol ili standard, već arhitektura koja omogućava fleksibilnost u implementaciji API-ja.

Ova fleksibilnost i sloboda koju pruža programerima, čine REST široko prihvaćenim stilom za razvoj API-ja. Neki od ključnih principa REST arhitekture uključuju:

  • Razdvajanje klijenta i servera: Klijent ne bi trebalo da utiče na server osim putem zahteva za podacima preko URI-ja (Uniform Resource Identifier). Isto tako, server ne bi trebalo da menja sadržaj klijenta.
  • Bez stanja (Stateless): Svaki zahtev je nezavisan od prethodnih ili narednih. Dva uzastopna zahteva ne znaju jedan za drugi. Kada je zahtev ispunjen, veza se prekida, bez čuvanja stanja.
  • Slojevita arhitektura: Klijent ili server ne znaju da li je zahtev upućen direktno izvornoj aplikaciji ili nekoj posredničkoj. Njihova briga je samo odgovor na zahtev.
  • Keširanje: Podaci ili odgovori se mogu privremeno čuvati (keširati) na strani klijenta i servera radi poboljšanja performansi i skalabilnosti.

Koje su ključne karakteristike REST-a?

Osnovne karakteristike REST-a su:

  • Fleksibilnost: Premeštanje sa jednog servera na drugi ne utiče na funkcionalnost API-ja jer će odgovor ostati isti za dati zahtev. Takođe, moguće je dodavati nove krajnje tačke za različite tipove podataka.
  • Skalabilnost: Keširanje poboljšava skalabilnost čuvanjem odgovora za kasniju upotrebu. Na taj način se smanjuje opterećenje servera i poboljšava brzina odziva.
  • Autorizacija: Korišćenjem autorizacionih zaglavlja, mogu se specificirati akreditivi koje server koristi za autorizaciju zahteva.
  • Bez stanja (Statelessness): Ovo je ključna karakteristika REST-a koja obezbeđuje da zahtevi budu izolovani jedni od drugih. Svaki zahtev se obavlja nezavisno i ne čuva se nikakvo stanje.

Šta su resursi u REST arhitekturi?

Resursi su entiteti nad kojima se vrše različite operacije, kao što su dohvat, ažuriranje ili brisanje. Oni predstavljaju osnovne gradivne blokove REST arhitekture.

Na primer, u kontekstu online prodavnice, proizvodi, korisnici i metapodaci se smatraju resursima jer se njima može upravljati. Resursi se mogu preneti između aplikacija putem API-ja.

Navedite prednosti i nedostatke REST API-ja.

Prednosti REST API-ja uključuju:

  • Jednostavnost implementacije.
  • Lako rukovanje resursima.
  • Skalabilnost zahvaljujući arhitekturi klijent-server.
  • Podrška za različite formate razmene podataka, kao što su XML i JSON.

Nedostaci su:

  • Nemogućnost održavanja stanja između zahteva.
  • Nepoznavanje stvarnog izvora resursa zbog slojevite arhitekture.
  • Neefikasnost za složene upite ili zahteve.

Definišite REST šablon.

REST šablon (RestTemplate) je pomoćni program u Spring framework-u koji olakšava pristup REST API-jima. On sakriva kod koji je potrebno napisati za slanje zahteva ka REST API-ju.

Šta je RESTful?

RESTful API-ji ili usluge su interfejsi koji implementiraju REST arhitekturu i koriste protokole poput HTTP-a.

Šta su RESTful web servisi?

RESTful web servisi su dizajnirani da optimalno funkcionišu na vebu. REST je arhitektonski stil koji specifično ograničava interfejs, slojevitost i bez stanja, što dovodi do poželjnih karakteristika kao što su performanse i skalabilnost.

Kako testirati RESTful web servise?

Za testiranje RESTful web servisa, mogu se koristiti REST klijenti poput Postmana ili Thunder Clienta. Nakon slanja zahteva ka web servisu, analizira se primljeni odgovor.

U slučaju složenih API-ja, potrebno je razbiti testiranje na manje celine i primeniti unit testiranje, integraciono testiranje, testiranje performansi i end-to-end testiranje.

Navedite neke karakteristike RESTful web servisa.

Ključne karakteristike RESTful web servisa su:

  • Podrška za različite tipove medija kao što su JSON i XML.
  • Prilagodljivost.
  • Izolacija klijenta i servera.
  • Fleksibilnost.

Definišite RESTful osnovne klase resursa.

Osnovne klase resursa su obični Java objekti (POJO) koji su označeni sa @Path ili imaju bar jednu metodu označenu sa @Path ili oznakama metoda zahteva (@GET, @POST, @PUT, @DELETE).

Šta je URI?

URI (Uniform Resource Identifier) je niz karaktera koji se koristi za lociranje ili identifikaciju resursa API-ja ili usluge. On koristi ime ili lokaciju resursa za identifikaciju, bez obzira na specifičan metod ili tehniku.

Šta je bez stanja (statelessness) u REST-u?

Bez stanja je ograničenje API-ja koje znači da dva uzastopna zahteva ne mogu znati jedan za drugi. Stanje zahteva se ne održava, i veza se prekida nakon dobijanja odgovora.

Šta je JAX-RS?

JAX-RS je Java API koji omogućava razvoj aplikacija u Javi koje koriste REST arhitekturu. Ovaj API olakšava razvoj REST aplikacija u Javi.

Koje su ključne anotacije u JAX-RS API-ju?

Anotacije u JAX-RS se koriste za dekorisanje Java klasa kako bi se definisali resursi i metode koje se mogu izvršavati na njima. Neke ključne anotacije su:

  • @GET: Za kreiranje GET zahteva u HTTP-u.
  • @POST: Za kreiranje POST zahteva u HTTP-u.
  • @Path: Odnosi se na relativnu putanju Java klase.
  • @QueryParam: Odnosi se na parametre upita za URI ili URL.

Koje su ključne karakteristike JAX-RS API-ja?

Karakteristike JAX-RS su:

  • Keširanje na strani klijenta.
  • Keširanje na strani servera.
  • Prilagođavanje upitnih stringova.
  • Runtime anotacije.

Kako se mogu konfigurisati JAX-RS aplikacije?

JAX-RS aplikacija se sastoji od barem jedne klase resursa spakovane u WAR datoteku. Osnovni URI odakle aplikacija odgovara na zahteve, može se podesiti na dva načina:

  • Korišćenjem anotacije @ApplicationPath u potklasi jakarta.ws.rs.core.Application koja je spakovana u WAR datoteku.
  • Korišćenjem oznake za mapiranje servlet-a unutar WAR datoteke descriptors web.xml.

Šta su JAX-WS i JAX-RS?

JAX-WS je Jakarta XML Web Services API koji se koristi za razvoj API-ja koristeći Simple Object Access Protocol (SOAP) – protokol za razmenu poruka zasnovan na XML-u.

Sa druge strane, JAX-RS je Java API za kreiranje web servisa koristeći REST arhitekturu.

Šta su HTTP statusni kodovi?

Statusni kodovi su način da server saopšti klijentu status odgovora. Oni su prisutni u zaglavljima odgovora koji server šalje.

Klijent može utvrditi da li zahtev nije uspeo, da li je ispunjen ili da li je došlo do greške pomoću statusnih kodova.

Neki od najčešćih HTTP statusnih kodova su:

  • 200 – Označava „OK“. Zahtev je ispunjen, i odgovor je u redu.
  • 404 – Označava „Not Found“. Resurs nije pronađen na serveru, ili krajnja tačka ne postoji.
  • 500 – Označava „Internal Server Error“. Server ne može da generiše tačan odgovor ili postoji greška koja nije eksplicitno izbačena.
  • 503 – Označava „Service Unavailable“. Server trenutno ne može da obradi zahtev, verovatno zbog preopterećenja ili održavanja.

Šta su HTTP metode?

HTTP metode se koriste za vršenje određene akcije na određenom resursu API-ja. Na primer, za preuzimanje liste filmova iz kolekcije, koristi se GET metoda. Za ažuriranje podataka, može se koristiti POST metoda.

Neke od najčešće korišćenih HTTP metoda su:

  • GET: Zahtevi koji koriste GET treba samo da preuzimaju podatke.
  • POST: Ažurira resurs slanjem novog resursa na server.
  • DELETE: Briše određeni resurs.
  • PATCH: Delimično modifikuje resurs.

Kako funkcioniše HTTP osnovna autentifikacija?

Autentifikacija je proces provere identiteta klijenta kako bi se očuvala bezbednost podataka. U HTTP-u, autentifikacija se odvija putem zaglavlja autorizacije koje šalje klijent.

Zaglavlje autorizacije se sastoji od korisničkog imena/ID-a i lozinke klijenta, koje server verifikuje i odobrava pristup.

Važno je da prilikom korišćenja HTTP autentifikacije, kanal preko kojeg prolaze akreditivi bude šifrovan i siguran. To se postiže pomoću SSL sloja, koji je integrisan u HTTPS. Preporučuje se upotreba HTTPS-a umesto običnog HTTP-a prilikom rada sa akreditivima.

Koje su osnovne komponente HTTP zahteva?

HTTP zahtev se sastoji od sledećih komponenti:

  • Red zahteva: Prvi red u zahtevu koji sadrži HTTP metodu, putanju ili krajnju tačku i broj HTTP verzije.
  • Zaglavlja: Koriste se za pružanje metapodataka o zahtevu.
  • Telo (opciono): Prisutno samo za neke metode zahteva, na primer, kod POST zahteva. To je stvarna poruka zahteva.

Koje su osnovne komponente HTTP odgovora?

HTTP odgovor se sastoji od sledećih komponenti:

  • Status: HTTP statusni kod koji šalje server.
  • Zaglavlja: Slično zahtevima, i odgovori imaju zaglavlja koja pružaju informacije o odgovoru.
  • Poruka: Stvarni podaci koje server šalje klijentu za traženi resurs.

Koja je razlika između REST-a i AJAX-a?

AJAX je klijent koji se koristi za pristup RESTful API-ju i omogućava slanje asinhronih zahteva putem JavaScript-a.

REST, kao arhitektura, koristi se za kreiranje RESTful API-ja. Ukratko, AJAX se koristi kao klijent za slanje HTTP zahteva, dok se REST arhitektura koristi za implementaciju RESTful API-ja.

Koja je razlika između SOAP-a i REST-a?

REST je arhitektura sa minimalnim ograničenjima za kreiranje API-ja. SOAP, sa druge strane, je protokol sa strogim pravilima za implementaciju API-ja.

REST je fleksibilniji i lakši za upotrebu od SOAP-a. SOAP koristi XML za razmenu poruka, dok REST podržava razne formate (JSON, XML, itd.). REST je brži i jednostavniji od SOAP-a.

SOAP ima ugrađene sigurnosne mehanizme, što je prednost, ali ga čini kompleksnijim za korišćenje.

Koja je razlika između PUT-a i POST-a?

POST je HTTP metoda za slanje podataka serveru. Višestruki POST zahtevi za isti resurs mogu dovesti do neželjenih efekata (dupliranje podataka). Na primer, slanje više POST zahteva za dodavanje artikla u kolekciju može dovesti do dupliranja artikla.

PUT je HTTP metoda za slanje podataka serveru za određeni resurs, ali ažurira podatke samo jednom. Višestruki PUT zahtevi ne proizvode neželjene efekte. Ako resurs ne postoji, PUT će ga kreirati, a ako postoji, ažuriraće ga.

PUT je idempotentan, dok POST nije.

Šta je korisno opterećenje (payload)?

Korisno opterećenje je telo zahteva koje šalje klijent serveru. To su podaci koje se šalju na server i vraćaju kao odgovor.

Koja je maksimalna veličina korisnog opterećenja kod POST metode?

Ne postoji podrazumevano ograničenje u HTTP protokolu. Ograničenje može zavisiti od ograničenja klijenta ili servera, šta god je minimalno.

Koje su najbolje prakse za kreiranje URI-ja?

Ključne tačke koje treba imati na umu prilikom dizajniranja URI-ja su:

  • Izbegavati korišćenje ekstenzija datoteka.
  • Održavati doslednost u svim URI-jima.
  • Podeliti URI-je na domene i poddomene za različite skupove resursa.
  • Koristiti crtice ili donje crte za razdvajanje reči u URI-jima.
  • Koristiti kosu crtu za označavanje hijerarhije resursa.
  • Kodirati URI koristeći odgovarajuće kodiranje.
  • Obezbediti da URI bude čitljiv.

Šta su idempotentne metode?

Idempotentne HTTP metode imaju isti efekat na server bez obzira na broj identičnih zahteva. Na primer, slanje više identičnih DELETE zahteva za isti resurs rezultira istim stanjem servera kao da je poslat samo jedan zahtev.

Neke od idempotentnih metoda uključuju:

  • PUT
  • DELETE
  • GET
  • HEAD
  • OPTIONS

Šta je Postman?

Postman je alat za razvoj, modifikovanje i testiranje API-ja. Pruža mnoge funkcije za brzo kreiranje i testiranje API-ja bez potrebe za dodatnim podešavanjima.

Zaglavlje Cache-Control sadrži instrukcije za konfiguraciju keširanja u pretraživačima i serverima. Ono govori pretraživaču ili serveru šta da kešira i koliko dugo pre nego što se ponovo zatraži putem mrežnog zahteva.

Direktive u Cache-Control zaglavlju uključuju:

  • max-age
  • no-cache
  • private
  • public
  • no-store
  • immutable

Definišite razmenu poruka u RESTful web servisima.

Razmena poruka u RESTful web servisima podrazumeva slanje HTTP zahteva od klijenta ka serveru i odgovora od servera ka klijentu. Ova komunikacija se smatra porukama.

Koja je razlika između monolitne, SOA i mikroservisne arhitekture?

U monolitnoj arhitekturi, sve je na jednom mestu. Klijentska strana, server i baza podataka se nalaze na jednom mestu. Reč „monolit“ označava jedan blok ili kamen.

SOA (Service-Oriented Architecture) arhitektura koristi različite usluge za upravljanje različitim aspektima aplikacije. To je kombinacija više servisnih softverskih modula čija je integracija ključna komponenta.

Mikroservisna arhitektura je slična SOA, ali ima veći broj autonomnih softverskih programa koji komuniciraju putem API-ja. Za razliku od monolitne arhitekture, sve je autonomno i nezavisno.

Kako funkcioniše mikroservisna arhitektura?

U mikroservisnoj arhitekturi, aplikacije su podeljene na manje, nezavisne podjedinice koje komuniciraju preko definisanih API-ja.

Prednosti mikroservisne arhitekture uključuju agilnost, fleksibilnost, skalabilnost, korišćenje nezavisnih tehnologija, usluge za više upotreba i laku primenu.

Šta je CRUD?

CRUD (Create, Read, Update, Delete) su osnovne operacije koje se mogu izvršavati nad resursom. API koji podržava sve ove operacije naziva se CRUD API.

Šta je keširanje?

Keširanje je tehnika skladištenja odgovora ili zahteva na klijentu ili serveru radi ponovne upotrebe. Odgovori se uglavnom keširaju na klijentu da bi se izbeglo slanje istih zahteva preko mreže i gubljenje propusnog opsega.

Kakva je upotreba @RequestMapping-a?

To je anotacija u Spring framework-u za mapiranje web zahteva na određene klase ili metode za rukovanje.

Šta radi @PathVariable?

Anotacija @PathVariable u Spring framework-u se koristi za izdvajanje vrednosti iz promenljivih šablona i dodeljivanje njihovih vrednosti varijabli metode.

Definišite HttpMessageConverter.

HttpMessageConverter se koristi za konverziju HTTP zahteva ili njegovih delova u tip koji je potreban kao argument za metodu, ili za konverziju vrednosti koju vraća metoda u HTTP odgovor.

Neki alati koji se mogu koristiti za testiranje API-ja uključuju:

  • Postman
  • Swagger
  • Rest Sharp
  • Katalon
  • ReadyAPI
  • Apigee

Završne reči

API-ji su postali veoma popularni zbog razvoja interneta. Takođe, REST API-ji su popularni zbog jednostavnosti razvoja i upotrebe.

Ukoliko se pripremate za intervju, razmotrite gore navedena pitanja o REST API-jima koja se često postavljaju.

Nakon ovoga, možete pogledati kako skrejpovati veb lokaciju koristeći VdZvdZ-ov Web Scraping API.