REST käyttää standardeja HTTP-metodeja verbeinä, jotka toimivat resursseihin. Yleinen kuvaus CRUD:iin (Create, Read, Update, Delete) on:
REST käyttää standardeja HTTP-metodeja verbeinä, jotka toimivat resursseihin. Yleinen kuvaus CRUD:iin (Create, Read, Update, Delete) on:
| CRUD | Metodi | Tyypillinen käyttö |
|---|
| Create | POST | Lisää uuden resurssin collectioniin |
| Read | GET | Hae resurssi tai lista |
| Update (täysi) | PUT | Korvaa resurssin kokonaan |
| Update (osittainen) | PATCH | Muokkaa joitakin kenttiä |
| Delete | DELETE | Poista resurssi |
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]" }
PUT /users/42 lähettää koko representaation ja korvaa sen; PATCH /users/42 lähettää vain muutettavat kentät (esim. { "email": "[email protected]" }).
Nämä ovat kaksi eri ominaisuutta:
GET, HEAD, OPTIONS ovat safe.GET, PUT, DELETE, HEAD ovat idempotentteja.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)
Haastattelijat kysyvät tätä nähdäkseen, ymmärrätkö HTTP-semantiikan tarpeeksi hyvin luotettavien API:en rakentamiseen. Safe/idempotent-erottelu ei ole akateeminen: se säätelee suoraan, mitä clientit, proxyt ja CDN:t saavat tehdä. Safe-metodeja voidaan cachettaa ja esihakea vapaasti; idempotentteja metodeja voidaan automaattisesti uudelleenyrittää verkon timeoutin jälkeen ilman sivuvaikutusten kahdentumisriskiä — minkä vuoksi client voi turvallisesti uudelleenyrittää PUTin tai DELETEn mutta sen on oltava varovainen uudelleenyrittäessään POSTia (se saattaa luoda kaksi tilausta). Klassinen virhe on käyttää GETiä sivuvaikutusten laukaisemiseen (esim. GET /users/42/delete), mikä rikkoo cachetuksen ja antaa crawlerien vahingossa muuttaa dataa. Oikean metodin valitseminen — ja sen safety- ja idempotency-sopimuksen kunnioittaminen — on se, mikä tekee API:sta ennustettavan ja turvallisen rakentaa työkaluja sen ympärille.
Kirjasto IT-haastattelukysymyksiä yksityiskohtaisine vastauksineen — Juniorista Senioriin.
Lahjoita