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 ieșit: 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 citește verbul din $_SERVER["REQUEST_METHOD"] și trimite fiecare pe ramura lui. 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 vine cu 200, crearea cu 201 și un antet Location, iar ștergerea cu 204 și un corp gol.

Prompt
Scrie un script PHP al cărui router verifică $_SERVER["REQUEST_METHOD"] și 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-l cu serverul încorporat, trimite cele trei cereri și afișează fiecare metodă, cod de stare și orice antet Location sau corp de răspuns.
Ieșire: script PHP

Codul de stare potrivit

Și erorile merită precizie: o resursă inexistentă este 404 Not Found (cu un corp de eroare JSON, ca să-l poată citi programele), iar un verb greșit pe o cale cunoscută este 405 Method Not Allowed — cu un antet Allow care numește verbele ce ar funcționa. Scriptul routerului răspunde el însuși în ambele cazuri, alegând starea cu http_response_code().

200, 404 și 405

Notița existentă întoarce 200 cu date, cea lipsă 404 cu o eroare JSON, iar cererea DELETE pe o rută doar-GET este refuzată cu 405 și un antet Allow: GET.

Prompt
Scrie un script PHP al cărui handler GET /notes/{id} returnează 200 cu JSON pentru o notiță existentă, 404 cu un corp de eroare JSON pentru una lipsă și răspunde la orice altă metodă cu 405 plus un antet Allow: GET. Servește-l cu serverul încorporat, cere o notiță existentă, una lipsă și trimite un DELETE pentru a arăta codul 405 cu antetul său Allow. Afișează toate cele trei rezultate.
Ieșire: script PHP