> I'm still yet to be convinced that PUT and DELETE add
> much. The main justification Rusty gives is idempotency,
> and I don't see how in practice agents can retry PUTs and
> DELETEs if there is no built in locking/versioning
> mechanism. I do agree that with HTTP's stateless approach,
> a locking/versioning mechanism should NOT exist in the
> protocol for PUT and DELETE. I just think that since it
> doesn't, it is not practical for PUTs and DELETEs to be
> simply retried, and if that's true, what's the point of
> using PUT and DELETE other than syntactic sugar over POST?
>
Someone posted to the REST-discuss mailing list an answer to this question. They said you can simply include an If-Match header with the last ETag you received for the resource when you send (or resend) the PUT or DELETE.
http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.14.24The spec says that if the current version doesn't have the same ETag, the server should reject the request. That's an optimistic locking approach that I think solves the problem, which means idempotency
is a difference between PUT/DELETE and POST.