Idempotent
en HTTP-metod är idempotent om en identisk begäran kan göras en eller flera gånger i rad med samma effekt medan servern lämnas i samma tillstånd. Med andra ord bör en idempotent metod inte ha några biverkningar (förutom att hålla statistik). Implementerat korrekt är GET
HEAD
PUT
och DELETE
metoder idempotent, men inte POST
metod. Alla säkra metoder är också idempotenta.
för att vara idempotent beaktas endast serverns faktiska back-end-tillstånd, statuskoden som returneras av varje begäran kan skilja sig: det första samtalet av ett DELETE
kommer sannolikt att returnera ett 200
, medan successiva sådana sannolikt kommer att returnera ett 404
. En annan implikation avDELETE
att vara idempotent är att utvecklare inte ska implementera RESTful API: er med en delete last entry-funktionalitet medDELETE
– metoden.
Observera att idempotens för en metod inte garanteras av servern och vissa applikationer kan felaktigt bryta idempotence-begränsningen.
GET /pageX HTTP/1.1
är idempotent. Kallas flera gånger i rad får klienten samma resultat:
GET /pageX HTTP/1.1GET /pageX HTTP/1.1GET /pageX HTTP/1.1GET /pageX HTTP/1.1
POST /add_row HTTP/1.1
är inte idempotent; om det kallas flera gånger lägger det till flera rader:
POST /add_row HTTP/1.1POST /add_row HTTP/1.1 -> Adds a 2nd rowPOST /add_row HTTP/1.1 -> Adds a 3rd row
DELETE /idX/delete HTTP/1.1
är idempotent, även om den returnerade statuskoden kan ändras mellan förfrågningar:
DELETE /idX/delete HTTP/1.1 -> Returns 200 if idX existsDELETE /idX/delete HTTP/1.1 -> Returns 404 as it just got deletedDELETE /idX/delete HTTP/1.1 -> Returns 404