Deo zbornika Učimo Javascript
HTTP GET zahtev u Javascriptu
HTTP GET zahtev je način da učitamo resurse preko mreže. Podrazumevano, HTTP zahtevi u Javascriptu su asinhroni, osim ako ne podesimo da budu sinhroni.
Asinhroni HTTP zahtevi doveli su do nastanka takozvanih Ajax aplikacija, kod kojih nije potrebno iznova učitavati celu stranicu. Pomoću JavaScripta možemo uputiti HTTP zahtev serveru, dobiti odgovor i ažurirati samo deo strane. Zahvaljujući tome, moguće je praviti web aplikacije nalik desktop aplikacijama.
XMLHttpRequest
XMLHttpRequest()
je objekat koji omogućava da šaljemo HTTP zahteve iz JavaScripta. Istorijski, prvo je uveden upregledač IE, a kasnije je implementiran i u drugim pregledačima.
Osnovni HTTP GET zahtev za učitavanje podataka bi izgledao ovako:
const http = new XMLHttpRequest()
http.open("GET", "https://api.lyrics.ovh/v1/shakira/waka-waka")
http.send()
http.onload = () => console.log(http.responseText)
Redosled je veoma bitan, npr. ako pozovemo send
pre open
, neće raditi.
Format odgovora u ovom primeru je JSON string. Da bismo ga preveli u objekat, potrebno je uraditi JSON.parse(http.responseText)
.
Fetch metoda
Fetch API je noviji i unapređen način za asinhronu komunikaciju. Osnovni GET zahtev bi izgledao ovako:
fetch('https://api.lyrics.ovh/v1/shakira/waka-waka')
.then(response => response.json())
.then(json => console.log(json.lyrics))
Fetch funkcija pravi obećanje (promise), koje nakon što se razreši (kada odgovor stigne):
- unutar prvog
then
-a pretvaramo u željeni format, - unutar drugog
then
-a možemo koristiti.
Ukoliko kao odgovor očekujemo tekst, onda koristimo metodu response.text()
.