Treci la conținutul principal

Serverul te apelează pe tine

Un server web Node.js este construit din handlere: funcții cu forma (req: IncomingMessage, res: ServerResponse) => void, din modulul încorporat node:http. Serverul acceptă conexiunile și îți apelează handlerul o dată pentru fiecare cerere — req conține tot ce ține de cerere, iar tot ce scrii în res devine răspunsul.

Un server real pornește cu server.listen(8080) și rulează la nesfârșit. Exemplele de aici apelează în schimb server.listen(0): portul 0 înseamnă „orice port liber”, așa că nimic nu se poate ciocni. Apoi fiecare exemplu citește portul real, își face propria cerere cu fetch și apelează server.close() — astfel fiecare program rulează și se termină singur.


Un prim handler

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

Salut de la un handler

Handlerul scrie în res; clientul citește exact asta drept corp al răspunsului, iar statusul 200 OK este completat automat.

Prompt
Scrie un program TypeScript cu cel mai mic handler node:http posibil, unul care scrie o linie de salut. Servește-l pe portul 0, trimite o cerere GET cu fetch, afișează statusul și corpul răspunsului și închide serverul.
Ieșire: program TypeScript și rezultatul capturat

Răspunsul cu JSON

Un handler de API face trei lucruri: setează antetul Content-Type, alege un cod de status și scrie datele. res.writeHead(200, { "Content-Type": "application/json" }) le face pe primele două, iar res.end(JSON.stringify(value)) scrie corpul.

Ordinea contează: statusul și antetele trebuie setate înainte de a se scrie corpul.

Un endpoint JSON

Handlerul transformă un UserRecord în text JSON și îl trimite. 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 TypeScript cu un handler care răspunde cu un UserRecord în format JSON, setând statusul și antetul Content-Type cu res.writeHead. Servește-l pe portul 0, cere-l cu fetch și afișează statusul, tipul de conținut și corpul JSON.
Ieșire: program TypeScript și rezultatul capturat