PUT, side effects and 201 Created?

2616 specifically allows PUT to have side effects;

> A single resource MAY be identified by many different URIs. For  
> example, an article might have a URI for identifying "the current  
> version" which is separate from the URI identifying each particular  
> version. In this case, a PUT request on a general URI might result  
> in several other URIs being defined by the origin server.
>
> HTTP/1.1 does not define how a PUT method affects the state of an  
> origin server.
and it also says (in the context of PUT)

> If a new resource is created, the origin server MUST inform the  
> user agent via the 201 (Created) response.
So, if I PUT something to /foo, and it has the side effect if  
creating /foo;2006-04-03, is the response required to be a 201 Created?

I.e., read literally, the above requirement requires a 201 Created  
when PUT results in *any* resource being created -- even as a side  
effect.

This is IMO unnecessarily constraining, and should be relaxed; e.g.,  
changed to something like

"If a new resource is created at the Request-URI, the origin server  
MUST inform the user agent via the 201 (Created) response."

--
Mark Nottingham
mnot@yahoo-inc.com

Received on Monday, 3 April 2006 23:26:53 UTC