REST bruker standard HTTP-metoder som verbene som virker på ressurser. Den vanlige mappingen til CRUD (Create, Read, Update, Delete) er:
REST bruker standard HTTP-metoder som verbene som virker på ressurser. Den vanlige mappingen til CRUD (Create, Read, Update, Delete) er:
| CRUD | Metode | Typisk bruk |
|---|
| Create | POST | Legg til en ny ressurs i en collection |
| Read | GET | Hent en ressurs eller liste |
| Update (full) | PUT | Erstatt en ressurs fullstendig |
| Update (delvis) | PATCH | Endre noen felter |
| Delete | DELETE | Fjern en ressurs |
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 sender hele representasjonen og erstatter den; PATCH /users/42 sender bare feltene som skal endres (f.eks. { "email": "[email protected]" }).
Dette er to forskjellige egenskaper:
GET, HEAD, OPTIONS er safe.GET, PUT, DELETE, HEAD er idempotente.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)
Intervjuere spør om dette for å se om du forstår HTTP-semantikk godt nok til å bygge pålitelige API-er. Skillet safe/idempotent er ikke akademisk: det styrer direkte hva klienter, proxyer og CDN-er har lov til å gjøre. Safe-metoder kan caches og forhåndshentes fritt; idempotente metoder kan prøves på nytt automatisk etter en nettverkstimeout uten risiko for å duplisere sideeffekter — som er grunnen til at en klient trygt kan prøve en PUT eller DELETE på nytt, men må være forsiktig med å prøve en POST på nytt (den kan opprette to ordrer). Den klassiske feilen er å bruke GET til å utløse sideeffekter (f.eks. GET /users/42/delete), som ødelegger caching og lar crawlere endre data ved et uhell. Å velge riktig metode — og respektere dens safe- og idempotens-kontrakt — er det som gjør et API forutsigbart og trygt å bygge verktøy rundt.
Et bibliotek av IT-intervjuspørsmål med detaljerte svar — fra Junior til Senior.
Doner