Idempotent
o metodă HTTP este idempotent dacă o solicitare identică poate fi făcută o dată sau de mai multe ori la rând cu același efect, lăsând serverul în aceeași stare. Cu alte cuvinte, o metodă idempotentă nu ar trebui să aibă efecte secundare (cu excepția păstrării statisticilor). Implementat corect, GET
HEAD
PUT
și DELETE
metodele sunt idempotent, dar nu POST
metodă. Toate metodele sigure sunt, de asemenea, idempotente.
pentru a fi idempotent, este luată în considerare doar starea reală de back-end a serverului, codul de stare returnat de fiecare solicitare poate diferi: primul apel al unui DELETE
va returna probabil un 200
, în timp ce cele succesive vor returna probabil un 404
. O altă implicație a DELETE
fiind idempotent este că dezvoltatorii nu ar trebui să implementeze API-uri RESTful cu o funcționalitate de ștergere a ultimei intrări folosind metoda DELETE
.
rețineți că idempotența unei metode nu este garantată de server și unele aplicații pot rupe incorect constrângerea idempotence.
GET /pageX HTTP/1.1
este idempotent. Numit de mai multe ori la rând, clientul obține aceleași rezultate:
GET /pageX HTTP/1.1GET /pageX HTTP/1.1GET /pageX HTTP/1.1GET /pageX HTTP/1.1
POST /add_row HTTP/1.1
nu este idempotent; dacă este apelat de mai multe ori, adaugă mai multe rânduri:
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
este idempotent, chiar dacă codul de stare returnat se poate schimba între cereri:
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