Sobes.tech
Junior

Kuidas toimub kliendi ja serveri vaheline suhtlus?

sobes.tech AI

Vastus AI-lt

Koostöö toimub HTTP/HTTPS protokolli kaudu, tavaliselt "klient-server" mudelis:

  1. Klient (brauser) saadab päringu. Päring sisaldab:
    • Meetodit (GET, POST, PUT, DELETE ja teised)
    • Nõutava ressursi URL-i
    • Pealkirju (teave kliendi, andmetüübi, autoriseerimise ja muu kohta)
    • Päringu keha (näiteks POST meetodite puhul, andmetega)
  2. Server töötleb päringu.
    • Saab ja analüüsib päringut.
    • Määrab ressursi ja operatsiooni.
    • Vajadusel pöördub andmetele (andmebaas, failisüsteem ja muu)
    • Koostab vastuse.
  3. Server saadab vastuse. Vastus sisaldab:
    • HTTP staatusekoodi (200 OK, 404 Not Found, 500 Internal Server Error ja teised)
    • Vastuse pealkirju (sisutüüp, vahemälu, küpsised ja muu)
    • Vastuse keha (HTML, JSON, XML, pilt ja muu)
  4. Klient saab ja töötleb vastuse.
    • Analüüsib vastust.
    • Kuvab sisu (näiteks HTML-lehekülg).
    • Täidab JavaScripti, töötleb andmeid.

Näide GET-päringust:

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

Näide vastusest GET-päringule:

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" }
]

Samuti kasutatakse teisi mehhanisme, et võimaldada rohkem interaktiivset suhtlust:

  • WebSocket: püsiv kahepoolne ühendus reaalajas andmevahetuseks (näiteks vestlused)
  • Server-Sent Events (SSE): ühe suunaga ühendus serverist kliendile, et saada uuenduste voog
  • Polling: klient saadab perioodiliselt päringuid serverile, et kontrollida uuendusi
  • Long Polling: klient saadab päringu, server hoiab seda avatud kuni andmed ilmuvad või aeg lõpeb, siis saadab vastuse

Veebirakenduste kontekstis laadib brauser ka ressursse (CSS, JS, pildid) eraldi HTTP-päringutega pärast algset HTML-i saamist. JavaScript võib dünaamiliselt saata täiendavaid päringuid API-le (AJAX), et saada või saata andmeid ilma lehe uuesti laadimata.