- From: <noah_mendelsohn@us.ibm.com>
- Date: Tue, 3 May 2005 10:03:55 -0400
- To: "Roy T. Fielding" <fielding@gbiv.com>
- Cc: W3C TAG <www-tag@w3.org>
Roy, I like this analysis a lot. I'd also like to suggest that to properly generalize, we should think about dynamic as well as static resources. I think that doing so makes the case that your option #3 is less tricky than it appears, particularly in the dynamic case where we are creating resources that change over time. Let's say that I am the owner of a set of clock resources. I control the example.org/clocks domain, and I make known to the world that a "PUT" for media type text/plain to any URI in that hierarchical space will in fact cause creation of a clock resource. The initial time will be set based on the time conveyed in the message, and from there on the clock will advance. I document that subsequent GETs will, for whatever reason, return an image/jpeg of the clock face, showing what the server believes to be the then-current value per that clock. I might do this because text/plain is just one of the formats I use for setting the clocks, but in all cases they return images. So I create and set a clock with: PUT /clocks/noahclock.txt HTTP/1.1 Host: example.org Content-type: text/plain >From the outside, this looks exactly like your example, and I think fits with your option #3, I.e. the returned representation need not be of the same type is the originally supplied, provided that everyone involved agrees. I suppose I'm bolstering the case that option #3 is important. I'm claiming that it looks less odd in the case where you already know that HTTP is not being used as a filesystem, because the resources are dynamic. Perhaps it's worth explicitly going into examples like this? I'm curious, do you believe that good practice is at all affected by the static/dynamic nature of the resource? Indeed, do we want to get into the business of suggesting that the media type used to set a clock should be taken as a hint regarding the media type with which it will respond? I would think not. So, my overall point is that the "static resource" case is ultimately a special case, though extremely common. Furthermore, we can't really know, whether your something.html is really a static resource, unless we architect that as a distinct subclass on the Web. Unless we have out of band information, such as a statement from the resource owner that the resource is static, we can only tell that it hasn't changed up to any given point where we check. Perhaps the "PUT" was to a CVS-like repository, and edits or changes of media type will occur over time. You wrote: > My inclination is that (1) is a bug, (2) is bad > implementation, (3) is a nifty feature when the > user is making an informed request, and (4) is the > right answer in all other cases. Exactly. I'm suggesting that dynamic resources are an interesting special case of an "informed request", presuming the user knows he/she issetting a clock and not writing a time into a filesystem. The fact that you know that the underlying state is going to change seems to me to affect your default expectation of anything resembling filesystem semantics. It may put some addition nuance on the suggestion that "(4) is the right answer in all other cases." As I say, overall I'm in complete agreement with your analysis and conclusions. Just suggesting that perhaps that discussion of dynamic resources might be valuable in framing the general-case behavior of HTTP, with static resources (filesystem semantics) presented as a common special case. Your call: you don't have to further convince me one way or the other. Thanks. -------------------------------------- Noah Mendelsohn IBM Corporation One Rogers Street Cambridge, MA 02142 1-617-693-4036 --------------------------------------
Received on Tuesday, 3 May 2005 14:04:12 UTC