Kako da koristite REST API – vodič za početnike

23 маја, 2022

API (Application Programming Interface) je važan koncept u programiranju. Ukoliko uložite malo truda i vremena da ga razumete, to u mnogome može pomoći u obavljanju vaših svakodnevnih programerskih zadataka.

Jedan od najčešćih tipova API-ja je REST API. Ako vam je ikada bilo potrebno preuzimanje podataka sa recimo Twitter-a ili GitHub-a, vi ste verovatno već koristili ovaj tip API-ja.

Ipak, pre nego što vidimo koje su sve praktične primene REST API-ja u svetu savremenih aplikacija, da prvo vidimo šta je to API. Ujedno ćemo vas provesti kroz principe REST API-ja.

Kako API-ji rade i zašto su nam potrebni?

API predstavlja set definicija i protokola. Potreban nam je za razvoj aplikacija i integraciju, jer služi za razmenu podataka između dva različita softvera, kao izvor/pošiljalac informacija (server) i kao korisnik.

Programi koriste API-je da komuniciraju, pribave informacije ili pokrenu funkciju. API-ji dozvoljavaju korisnicima da rade sa sistemom da bi vratili željeni rezultat.

Da pojednostavimo, API se ponaša kao posrednik između korsnika (klijenta) i resursa (servera).

Neki od razloga za integraciju API-ja su:

  • racionalizacija deljenja resursa i informacija
  • kontrolisanje ko kome ima pristup uz pomoć autentifikacije i definisanja prava
  • bezbednost i kontrola
  • nema potrebe za razumevanjem specifičnosti softvera
  • dosledna komunikacija između servisa, čak iako koriste različite tehnologije.

Uvod u REST API-je

RESTful se odnosi na softversku arhitekturu koja je skraćenica za „Transfer reprezentativnog stanja“. Možda ste čuli za to u kontekstu standardizacije korišćenja sistema za razmenu informacija (web servisa).

Ove web usluge koriste protokol bez stanja da bi tekstualne reprezentacije svojih onlajn resursa učinili dostupnim za čitanje i obradu. Klijent obavlja dobro poznate aktivnosti zasnovane na HTTP protokolu kao što su preuzimanje, ažuriranje i brisanje.

REST je prvi put uspostavljen 2000. godine sa ciljem poboljšanja performansi, skalabilnosti i jednostavnosti primenom specifičnih ograničenja na API.

Popularnost je stekao zbog mogućnosti pokrivanja različitih uređaja i aplikacija. Ispod ćete naći neke od namena korišćenja REST API-ja.

Upotreba na WEB-u

Ne postoji posebna tehnologija na strani klijenta za REST jer odgovara različitim projektima, kao što su:

  • web development
  • iOS aplikacije
  • IoT uređaji.

Pošto nećete morati da se pridržavate određene tehnologije na strani klijenta, možete izgraditi bilo koju infrastrukturu za svoju kompaniju.

Aplikacije u cloud-u

REST API pozivi su idealni za aplikacije u cloud-u zbog njihovog nezavisnog statusa. Ako nešto krene naopako, možete ponovo da primenite komponente bez stanja (stateless).

Računarstvo u cloud-u

API veza sa uslugom zahteva kontrolu načina na koji se URL dekodira. Zato je REST postao korisniji u uslugama u cloud-u.

RESTful API arhitektura će najverovatnije postati standard u budućnosti, zahvaljujući razvoju računarstva u oblaku i razvoju mikroservisa.

Kako REST API-ji rade?

Podaci (kao što su slike, video snimci i tekst) sadrže resurse u REST-u. Klijent posećuje određeni URL i šalje zahtev serveru da dobije odgovor.

Koncept iza REST API-ja

Zahtev (URL kojem pristupate) sadrži četiri komponente:

  • endpoint koji je zapravo URL sa strukturom root-endpoint/?
  • metod sa jednim od pet mogućih tipova (GET, POST, PUT, PATCH, DELETE)
  • header-i, koji poslužuju različite funkcije, uključujući autentikaciju i obezbeđujući informacije o sadržaju body sekcije (možete koristiti -H ili –header opciju da pošaljete HTTP header-e)
  • podaci (ili body) koje šaljete ka serveru preko opcije -d ili –data, sa POST, PUT, PATCH, ili DELETE zahtevima.

HTTP zahtevi vam omogućavaju da radite sa bazama podataka:

  • POS zahtev za kreiranje zapisa (record)
  • GET zahtev da pročitate ili dobijete resurse (dokument ili sliku, kao i kolekciju drugih resursa) od servera
  • PUT i PATCH zahtevi da ažurirate zapise
  • DELETE zahtevi da obrišete resurse sa servera

Ove operacije se odnose na četiri moguće akcije, poznatije kao CRUD: Create, Read, Update i Delete.

rest api crud

Server šalje podatke klijentu u jednom od sledećih formata:

  • HTML
  • JSON (koji je najčešći zahvaljujući njegovoj nezavisnosti od nekog konkretnog programskog jezika i pristupačnosti od strane ljudi ili mašina)
  • XLT
  • PHP
  • Python
  • plain text.

Zašto da koristite REST API?

rest api model

Zašto biste dali prednost REST-u u odnosu na druge API-je, kao na primer SOAP? Mnogi su razlozi za to, a neki od njih su skalabilnost, fleksibilnost, prenosivost i nezavisnost.

Ne zavisi od strukture projekta

Odvojeni rad klijenta i servera znači da programeri nisu vezani ni za jedan deo projekta. Zahvaljujući adaptivnim REST API-jima, oni mogu da razviju svaki aspekt bez uticaja na drugi.

Prenosivost i prilagodljivost

REST API-ji rade samo kada su podaci iz jednog od zahteva uspešno isporučeni. Omogućavaju vam da migrirate sa jednog servera na drugi i ažurirate bazu podataka u bilo kom trenutku.

Mogućnost da se projekat proširi u budućnosti

S obzirom da klijent i server deluju odvojeno, developeri mogu lako i brzo da prošire svoj projekat.

Karakteristike RESTful arhitekture

Programeri moraju da uzmu u obzir krutu strukturu nekih API-ja, kao što su SOAP ili XML-RPC. Ali REST API-ji su različiti. Oni podržavaju širok spektar tipova podataka i mogu biti napisani praktično na bilo kom programskom jeziku.

Šest REST arhitektonskih ograničenja su principi za projektovanje rešenja:

Jedinstveni interfejs (dosledan korisnički interfejs)

Ovaj koncept nalaže da svi API upiti za isti resurs, bez obzira na njihovo poreklo, treba da budu identični, odnosno na jednom specifičnom jeziku. Jedna uniformna identifikacija resursa (URI) je povezana sa istim podacima, kao što su ime korisnika ili adresa e-pošte.

Drugi princip uniformnog interfejsa kaže da poruke treba da budu samoopisne. Oni moraju biti razumljivi da bi server mogao da odredi kako da se nosi sa tim (na primer, tip zahteva, tipovi mime-a itd.).

Klijent-server odvajanje

REST arhitektonski stil ima poseban pristup implementaciji klijenta i servera. Stvar je u tome što se mogu raditi nezavisno i ne moraju da znaju za druge.

Na primer, klijent ima samo jedinstvenu identifikaciju resursa (URI) zahtevanog resursa i ne može da komunicira sa serverskim programom na bilo koji drugi način. S druge strane, server ne bi trebalo da utiče na klijentski softver. Dakle, šalje osnovne podatke preko HTTP-a.

Šta ovo znači?

  • Možete da izmenite klijentski kod u bilo kom trenutku bez uticaja na rad servera.
  • Možete zadržati klijentske i serverske programe i modularne i nezavisne sve dok svaka strana zna koji format poruke da dostavi drugoj.

Šta postižemo odvajanjem problema korisničkog interfejsa od ograničenja skladištenja podataka? Poboljšavamo fleksibilnost interfejsa na različitim platformama i povećavamo skalabilnost.

Štaviše, svaka komponenta ima koristi od razdvajanja jer može da se razvija nezavisno. REST interfejs pomaže različitim klijentima u:

  • pristupa istim REST krajnjim tačkama
  • izvršavanje identičnih aktivnosti
  • dobijajući slične odgovore.

Stateless komunikacija između klijenta i servera

Sistemi zasnovani na REST-u su bez stanja (stateless), što znači da stanje klijenta ostaje nepoznato serveru i obrnuto. Ovo ograničenje omogućava serveru i klijentu da razumeju bilo koju poslatu poruku, čak i ako nisu videli prethodne.

Da biste primenili ovo, morate da koristite resurse, a ne komande. Njihova svrha je da opišu bilo koji objekat koji želite da zadržite ili da prenesete drugim uslugama.

Možete da kontrolišete, menjate i ponovo koristite komponente bez uticaja na sistem u celini, tako da prednosti ovog ograničenja uključuju postizanje:

  • stabilnost
  • brzina
  • skalabilnost RESTful aplikacija.

Imajte na umu da svaki zahtev treba da sadrži sve informacije potrebne za njegovo dovršavanje. Klijentske aplikacije moraju da sačuvaju stanje sesije jer serverske aplikacije ne bi trebalo da čuvaju nikakve podatke povezane sa zahtevom klijenta.

Keširanje podataka

REST zahteva keširanje resursa na strani klijenta ili servera gde god je to moguće. Keširanje podataka i odgovora je ključno u današnjim aplikacijama jer rezultira boljim performansama na strani klijenta.

Kako to utiče na korisnika? Dobro vođeno keširanje može smanjiti ili eliminisati neke interakcije na relaciji klijent-server.

Takođe daje serveru više opcija za skalabilnost zbog manjeg opterećenja servera. Keširanje povećava brzinu učitavanja stranice i omogućava vam pristup prethodno pregledanom sadržaju bez internet veze.

Slojevita sistemska arhitektura

restful

RESTful slojevita struktura dizajna je sledeće ograničenje o kome se raspravlja. Ovaj princip uključuje grupisanje različitih slojeva sa određenim funkcijama.

REST API slojevi imaju svoje odgovornosti i dolaze u hijerarhijskom redosledu. Na primer, jedan sloj može biti odgovoran za skladištenje podataka na serveru, drugi za primenu API-ja na drugom serveru, a treći za autentifikaciju zahteva na drugom serveru.

Ovi slojevi deluju kao posrednici i sprečavaju direktnu interakciju između klijentskih i serverskih aplikacija. Kao rezultat toga, klijent ne zna kom serveru ili komponenti se obraća.

Kada svaki sloj obavlja svoju funkciju pre nego što prenese podatke na sledeći, to poboljšava ukupnu sigurnost i fleksibilnost API-ja jer dodavanje, izmena ili uklanjanje API-ja ne utiče na druge komponente interfejsa.

Kodiranje na zahtev (on-demand)

Najčešći scenario korišćenja REST API-ja je isporuka statičkih reprezentacija resursa u XML-u ili JSON-u.

Međutim, ovaj model arhitekture omogućava korisnicima da preuzimaju i pokreću kod u obliku Java apleta ili skripti (kao što je JavaScript). Na primer, klijenti mogu da preuzmu kod za prikazivanje za UI vidžete pozivanjem vašeg API-ja.

Izazovi koje možete očekivati prilikom korišćenja REST API-ja

Kada ste razumeli REST API dizajn i ograničenja arhitekture, trebalo bi da znate i koje probleme možete očekivati dok koristite ovaj stil:

Sporazum o REST endpoint-ima

API-ji treba da ostanu dosledni bez obzira na konstrukciju URL-a. Ali sa porastom mogućih kombinacija metoda, teže je održati uniformnost u velikim kodnim bazama.

Verzioniranje kao karakteristika REST API-ja

API-ji zahtevaju redovno ažuriranje ili verzioniranje da bi se sprečili problemi sa kompatibilnošću. Međutim, stari endpoint-i ostaju operativni, što povećava opterećenje.

Veliki broj metoda autentifikacije

Možete odrediti koji su resursi dostupni za koje tipove korisnika. Na primer, možete da odredite koje usluge treće strane mogu da pristupe adresama e-pošte klijenata ili drugim osetljivim informacijama i šta mogu da urade sa ovim promenljivima.

Ipak, 20 različitih metoda autorizacije koje postoje mogu otežati vaš početni API poziv. Zbog toga programeri ne nastavljaju sa projektom zbog početnih poteškoća.

Bezbednosni propusti REST API-ja

Iako RESTful API-ji imaju slojevitu strukturu, i dalje mogu postojati neki bezbednosni problemi. Na primer, ako aplikacija nije dovoljno bezbedna zbog nedostatka enkripcije, može da otkrije osetljive podatke, ili haker može da pošalje hiljade API zahteva u sekundi, uzrokujući DDoS napad ili druge zloupotrebe API usluge koje mogu da sruše vaš server.

Prekomerno prikupljanje podataka i zahteva

Server može da vrati zahtev sa svim podacima, koji mogu biti nepotrebni, ili ćete možda morati da pokrenete više upita da biste dobili potrebne informacije.

Zaključak

Nije iznenađenje što se predviđa da će API-ji u budućnosti pojednostaviti komunikaciju zasnovanu na webu. Njihova svrha je da omoguće bilo kojoj web aplikaciji da komunicira i deli podatke.

Na primer, pomažu rastućim onlajn preduzećima u razvoju robusnih i inventivnih sistema. Kako se API arhitektura razvija, ona usvaja lakše i fleksibilnije varijante, koje su kritične za mobilne aplikacije i raštrkane mreže.

Bez komentara

Оставите одговор

Ваша адреса е-поште неће бити објављена.