Capitol gratuit

Protocolul HTTP si comunicarea client-server

HTTP (HyperText Transfer Protocol) este protocolul de baza al web-ului, un protocol stateless bazat pe cereri si raspunsuri. Fiecare cerere contine o metod...

Fundamente HTTP

HTTP (HyperText Transfer Protocol) este protocolul de baza al web-ului, un protocol stateless bazat pe cereri si raspunsuri. Fiecare cerere contine o metoda, un URL, headere si optional un body, iar fiecare raspuns include un status code, headere si un body.

Metodele HTTP

Fiecare metoda HTTP are o semantica specifica care trebuie respectata in design-ul API-urilor:

MetodaScopIdempotentBody
GETCitire resurseDaNu
POSTCreare resurseNuDa
PUTInlocuire completaDaDa
PATCHActualizare partialaNu*Da
DELETEStergere resurseDaOptional
OPTIONSInterogare capabilitatiDaNu
HEADDoar headere (fara body)DaNu
⚠️ Idempotenta conteaza!

O operatie idempotenta produce acelasi rezultat indiferent de cate ori este apelata. GET, PUT si DELETE sunt idempotente - daca trimiteti de doua ori acelasi DELETE, rezultatul este acelasi (resursa este stearsa). POST nu este idempotent - doua apeluri POST identice vor crea doua resurse.

Status Codes HTTP

Categorii principale

IntervalCategorieExemple frecvente
1xxInformational100 Continue, 101 Switching Protocols
2xxSucces200 OK, 201 Created, 204 No Content
3xxRedirectionare301 Moved, 304 Not Modified
4xxEroare client400 Bad Request, 401 Unauthorized, 404 Not Found
5xxEroare server500 Internal Error, 502 Bad Gateway, 503 Unavailable

Status codes esentiale pentru API

200 OK              - Cerere reusita (GET, PUT, PATCH)
201 Created         - Resursa creata cu succes (POST)
204 No Content      - Succes fara body (DELETE)
400 Bad Request     - Date invalide trimise de client
401 Unauthorized    - Autentificare necesara/esuata
403 Forbidden       - Autentificat dar fara permisiuni
404 Not Found       - Resursa nu exista
409 Conflict        - Conflict (ex: email duplicat)
422 Unprocessable   - Erori de validare
429 Too Many Req    - Rate limit depasit
500 Internal Error  - Eroare neasteptata pe server

Headere HTTP importante

Headere de cerere (Request)

Content-Type: application/json    // Tipul datelor trimise
Accept: application/json           // Formatul dorit pentru raspuns
Authorization: Bearer <token>      // Token de autentificare
User-Agent: Mozilla/5.0...         // Informatii despre client
Origin: https://exemplu.ro         // Originea cererii (CORS)
Cookie: session=abc123             // Cookie-uri

Headere de raspuns (Response)

Content-Type: application/json     // Tipul datelor returnate
Cache-Control: max-age=3600        // Instructiuni de caching
X-RateLimit-Limit: 100            // Limita de cereri
X-RateLimit-Remaining: 95         // Cereri ramase
Access-Control-Allow-Origin: *     // CORS
Set-Cookie: session=abc123         // Setare cookie

HTTPS si TLS

HTTPS adauga un strat de criptare TLS (Transport Layer Security) peste HTTP. Toata comunicarea este criptata end-to-end, protejand datele de interceptare (man-in-the-middle attacks).

In 2026, HTTPS este obligatoriu - browserele marcheaza site-urile HTTP ca nesigure, iar motoarele de cautare penalizeaza site-urile fara SSL/TLS. Servicii precum Let's Encrypt ofera certificate SSL gratuite.

💡 Inspectare HTTP in practica

Folositi Developer Tools > Network din browser pentru a vedea toate cererile HTTP. Fiecare cerere arata metoda, URL-ul, headerele, body-ul si raspunsul complet. Acest instrument este esential pentru debugging.

Formate de date

JSON - standardul modern

JSON (JavaScript Object Notation) este formatul dominant pentru API-urile moderne datorita simplitatii si compatibilitatii universale:

{
"id": 1,
"name": "Laptop Gaming",
"price": 4999.99,
"inStock": true,
"tags": ["electronics", "gaming"],
"specs": {
"cpu": "Intel i7-13700K",
"ram": "32GB DDR5"
}
}

Alte formate

  • XML - folosit in sisteme legacy, SOAP API-uri, configurari
  • Protocol Buffers - format binar de la Google, foarte eficient pentru gRPC
  • MessagePack - JSON binar, mai compact si mai rapid
  • YAML - folosit in configurari (Docker, CI/CD), nu in API-uri

Continuați cu restul cursului

Acesta este capitolul 2 din cele 20 ale cursului, cu 6 lecții din 82. Cumpărați cursul și parcurgeți tot conținutul în cont, cu progres salvat, test final și certificat.

Cumpărați cursul la 110 €