A REST standard HTTP metódusokat használ igékként, amelyek az erőforrásokon hatnak. A CRUD-ra (Create, Read, Update, Delete) való gyakori leképezés:
A REST standard HTTP metódusokat használ igékként, amelyek az erőforrásokon hatnak. A CRUD-ra (Create, Read, Update, Delete) való gyakori leképezés:
| CRUD | Metódus | Tipikus használat |
|---|
| Create | POST | Új erőforrás hozzáadása egy collectionhöz |
| Read | GET | Erőforrás vagy lista lekérése |
| Update (teljes) | PUT | Erőforrás teljes cseréje |
| Update (részleges) | PATCH | Néhány mező módosítása |
| Delete | DELETE | Erőforrás eltávolítása |
POST /users HTTP/1.1
Content-Type: application/json
{ "name": "Ann", "email": "[email protected]" }
HTTP/1.1 201 Created
Location: /users/42
{ "id": 42, "name": "Ann", "email": "[email protected]" }
A PUT /users/42 a teljes reprezentációt küldi, és lecseréli; a PATCH /users/42 csak a módosítandó mezőket küldi (pl. { "email": "[email protected]" }).
Ez két különböző tulajdonság:
GET, HEAD, OPTIONS safe.GET, PUT, DELETE, HEAD idempotent.Method Safe? Idempotent?
GET yes yes
HEAD yes yes
PUT no yes (replacing with the same body twice = same result)
DELETE no yes (deleting twice = still deleted)
PATCH no no* (depends on the patch; not guaranteed)
POST no no (posting twice usually creates two resources)
Az interjúztatók azért kérdezik ezt, hogy lássák, elég jól érted-e a HTTP-szemantikát megbízható API-k építéséhez. A safe/idempotent megkülönböztetés nem akadémiai: közvetlenül szabályozza, mit tehetnek a kliensek, proxyk és CDN-ek. A safe metódusok szabadon cache-elhetők és előre letölthetők; az idempotent metódusok egy hálózati timeout után automatikusan újrapróbálhatók anélkül, hogy megduplázódnának a mellékhatások — ezért próbálhat újra egy kliens biztonságosan egy PUT-ot vagy DELETE-et, de óvatosnak kell lennie egy POST újrapróbálásakor (két ordert hozhat létre). A klasszikus hiba a GET használata mellékhatások kiváltására (pl. GET /users/42/delete), ami elrontja a cache-elést, és engedi, hogy a crawlerek véletlenül módosítsák az adatokat. A helyes metódus kiválasztása — és a safe/idempotent szerződésének tiszteletben tartása — az, ami kiszámíthatóvá és tooling építésére biztonságossá tesz egy API-t.
IT interjúkérdések gyűjteménye részletes válaszokkal — Juniortól Seniorig.
Adományozás