Treci la conținutul principal

Serverul te apelează pe tine

Un server web în Go este construit din handlere: funcții cu forma func(w http.ResponseWriter, r *http.Request). Serverul acceptă conexiunile și îți apelează handlerul o dată pentru fiecare cerere — r conține tot ce ține de cerere, iar tot ce scrii în w devine răspunsul.

Un server real pornește cu http.ListenAndServe(":8080", mux) și rulează la nesfârșit. Exemplele de aici folosesc în schimb httptest.NewServer — un server real pe un port liber ales aleatoriu, pe care programul îl poate porni, folosi și opri, astfel încât fiecare exemplu rulează și se încheie singur.


Un prim handler

Cel mai mic handler posibil scrie o linie de text. Tot ce face un API — JSON, coduri de stare, rutare — se întâmplă în interiorul aceleiași forme de funcție.

Salut de la un handler

Handlerul scrie în w; clientul citește exact acest lucru ca fiind corpul răspunsului, cu starea 200 OK completată automat.

Prompt
Scrie un program Go cu cel mai mic handler HTTP posibil, care scrie o linie de salut, servește-l cu un server httptest, trimite o singură cerere GET și afișează starea și corpul răspunsului.
Ieșire: program Go și rezultatul capturat

Răspunsul în format JSON

Un handler de API face trei lucruri: setează antetul Content-Type, alege un cod de stare și codifică datele. json.NewEncoder(w).Encode(value) scrie JSON direct în răspuns.

Ordinea contează: antetele trebuie setate înainte ca corpul să fie scris.

Un endpoint JSON

Handlerul codifică o structură direct în writerul răspunsului. Clientul primește JSON valid și tipul de conținut corect — acesta este scheletul fiecărui endpoint din restul acestui grup.

Prompt
Scrie un program Go cu un handler care răspunde cu o structură User codificată în JSON, folosind json.NewEncoder și un antet Content-Type, servește-l cu httptest, trimite o cerere și afișează starea, tipul de conținut și corpul JSON.
Ieșire: program Go și rezultatul capturat