Treci la conținutul principal

Spune exact ce vrei

Un API REST vorbește prin două vocabulare. Metoda spune ce vrea clientul: GET citește, POST creează, PUT înlocuiește, PATCH schimbă o parte, DELETE șterge. Codul de stare spune cum a decurs: 2xx succes, 4xx greșeala clientului, 5xx a serverului.

Un detaliu care merită știut: PUT este idempotent — trimis de două ori se termină la fel ca o singură dată. POST nu este: două cereri POST creează două resurse.


Metoda potrivită

Routerul potrivește atât metoda, cât și calea, așa că fiecare verb primește propriul handler. Crearea răspunde cu 201 Created și indică noua resursă printr-un antet Location; ștergerea răspunde cu 204 No Content — succes fără nimic de spus, așa că trupul răspunsului rămâne gol.

GET, POST și DELETE pe aceeași resursă

Trei verbe, trei răspunsuri: lista vine înapoi cu 200, crearea cu 201 și un antet Location, ștergerea cu 204 și un trup gol.

Prompt
Scrie un program TypeScript cu un mic router conștient de metodă, care tratează GET /notes (200 cu o linie de listă), POST /notes (201 cu un antet Location) și DELETE /notes/{id} (204, trup gol). Servește-l pe portul 0, trimite cele trei cereri cu fetch și afișează fiecare metodă, codul de stare și eventualul antet Location sau trupul răspunsului.
Ieșire: program TypeScript și rezultatul capturat

Codul de stare potrivit

Și erorile merită precizie: o resursă lipsă înseamnă 404 Not Found, cu un trup de eroare în JSON, ca să poată fi citit de programe. Un verb greșit pe o cale cunoscută înseamnă 405 Method Not Allowed.

Aici nimeni nu trimite acel 405 în locul tău. Routerul verifică separat cele două părți: dacă s-a potrivit calea vreunei rute, dar nicio rută nu a potrivit metoda, el răspunde cu 405 și adaugă un antet Allow care enumeră verbele care ar fi funcționat.

200, 404 și 405

Notița existentă întoarce 200 cu date, cea lipsă 404 cu o eroare în JSON, iar DELETE pe o rută doar pentru GET este refuzat cu 405 chiar de router.

Prompt
Scrie un program TypeScript cu un handler GET /notes/{id} care întoarce 200 cu JSON pentru o notiță existentă și 404 cu un trup de eroare în JSON pentru una lipsă, plus un router care răspunde cu 405 și un antet Allow atunci când calea se potrivește, dar metoda nu. Servește-l pe portul 0, apoi cere o notiță existentă, una lipsă și un DELETE pe aceeași cale, afișând toate cele trei rezultate.
Ieșire: program TypeScript și rezultatul capturat