Treci la conținutul principal

Spune exact ce vrei să spui

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ă

Tiparele de metodă din mux trimit fiecare verb către 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.

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

Trei verbe, trei răspunsuri: lista revine cu 200, crearea cu 201 și un antet Location, iar ștergerea cu 204 și un corp gol.

Prompt
Scrie un program Go cu un mux care tratează GET /notes (200 cu o linie de listă), POST /notes (201 cu un antet Location) și DELETE /notes/{id} (204, corp gol). Servește cu httptest, trimite cele trei cereri și afișează pentru fiecare metoda, codul de stare și eventualul antet Location sau corp.
Ieșire: program Go și rezultatul capturat

Codul de stare potrivit

Și erorile merită precizie: o resursă lipsă înseamnă 404 Not Found (cu un corp de eroare JSON, ca să-l poată citi și programele), iar un verb greșit pe o cale cunoscută înseamnă 405 Method Not Allowed — pe care mux-ul din Go îl trimite în locul tău atunci când calea se potrivește, dar metoda nu.

200, 404 și 405

Nota existentă returnează 200 cu date, cea lipsă 404 cu o eroare JSON, iar cererea DELETE pe o rută doar pentru GET este refuzată cu 405 chiar de către router.

Prompt
Scrie un program Go cu un handler GET /notes/{id} care returnează 200 cu JSON pentru o notă existentă și 404 cu un corp de eroare JSON pentru una lipsă. Servește cu httptest, cere o notă existentă, o notă lipsă și trimite un DELETE către aceeași cale pentru a arăta codul 405 automat. Afișează toate cele trei rezultate.
Ieșire: program Go și rezultatul capturat