Sobes.tech
Junior

Kako se odvija interakcija između klijenta i servera?

sobes.tech АИ

Одговор од АИ

Interakcija se dešava putem HTTP/HTTPS protokola, obično u modelu "klijent-server":

  1. Klijent (pregledač) šalje zahtev. Zahtev sadrži:
    • Metod (GET, POST, PUT, DELETE itd.)
    • URL traženog resursa
    • Zaglavlja (informacije o klijentu, tip podataka, autorizacija itd.)
    • Telo zahteva (za metode poput POST, sa podacima)
  2. Server obrađuje zahtev.
    • Prima i analizira zahtev.
    • Određuje resurs i operaciju.
    • Pristupa podacima (baza podataka, fajl sistem itd.), ako je potrebno.
    • Formira odgovor.
  3. Server šalje odgovor. Odgovor sadrži:
    • HTTP statusni kod (200 OK, 404 Not Found, 500 Internal Server Error itd.)
    • Zaglavlja odgovora (tip sadržaja, keširanje, kolačići itd.)
    • Telo odgovora (HTML, JSON, XML, slika itd.)
  4. Klijent prima i obrađuje odgovor.
    • Analizira odgovor.
    • Prikazuje sadržaj (npr., renderuje HTML stranicu).
    • Izvršava JavaScript, obrađuje podatke.

Primer GET zahteva:

GET /api/users HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (...)
Accept: application/json

Primer odgovora na GET zahtev:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 150
Cache-Control: max-age=3600

[
  { "id": 1, "name": "Alice" },
  { "id": 2, "name": "Bob" }
]

Takođe se koriste i drugi mehanizmi za interaktivniju komunikaciju:

  • WebSocket: Konstantna dvostrana veza za razmenu podataka u realnom vremenu (npr. čatovi).
  • Server-Sent Events (SSE): Jednosmerna veza od servera ka klijentu za primanje toka ažuriranja.
  • Polling: Klijent periodično šalje zahteve serveru da proveri da li postoje ažuriranja.
  • Long Polling: Klijent šalje zahtev, server ga drži otvorenim dok ne dođu podaci ili ne istekne vreme, zatim šalje odgovor.

U kontekstu veb aplikacija, pregledač takođe učitava resurse (CSS, JS, slike) putem odvojenih HTTP zahteva nakon primanja početnog HTML-a. JavaScript takođe može dinamički slati dodatne zahteve API-ju (AJAX) za dobijanje ili slanje podataka bez osvežavanja stranice.