- From: <noah_mendelsohn@us.ibm.com>
- Date: Fri, 31 May 2002 19:14:39 -0400
- To: "Joshua Allen" <joshuaa@microsoft.com>
- Cc: "Mark Baker" <distobj@acm.org>, "Henrik Frystyk Nielsen" <henrikn@microsoft.com>, "Williams, Stuart" <skw@hplb.hpl.hp.com>, xml-dist-app@w3.org
Joshua Allen writes:
>> If you do a PUT on a resource and then you do a GET on
>> that same resource, the response body for the GET
>> should be the same thing that you PUT.
I'm not so sure.
1) The Web architecture and HTTP seem quite clear that what's returned is
a representation of a resource, and resources can surely have many
representations. If I do a PUT of a GIF, then surely I can get back a BMP
or a JPEG, especially if that MIME type is requested.
2) What says resources are immutable Let's say I have a Web site that
offers to host interval counters (admittedly a contrived example, but at
least it's simple). I do a PUT to a brand new resource:
http://timerssRUs/decrementingCounters/counter1
What I PUT is some message that essentially says "Initial Value = 40
seconds". I could encode that in SOAP or as text or in whatever form the
site understood. The resource is created exactly as indicated by the
document I PUT. If the counters update at 1 second intervals (read their
documentation) then a GET done with the first second will indeed retrieve
some representation of the value 40 seconds (it could be an exact copy of
the PUT message or it could be a GIF image of a clock!). If instead I
wait to seconds and try a GET, I would expect to get back a representation
of the value 38 seconds, surely not what I provided with PUT.
So, there are at least two reasons why what comes back is not necessarily
what you put up. The Web is much more than a simple document management
system; it is a network of resources, some of which are by their nature
active and all of which expose themselves as representations.
More fundamentally, it seems deeply broken to say that the Web deals in
representations when doing retrieval, but that it has some more
fundamental notion of setting state when doing creation or update. If
it's representations of current state for retrieval, it should be
representations of intended state for creation or update. If that's so,
then there is necessarily the possibility of processing to establish the
true state of a resource from such a representation. I do think the HTTP
spec is somewhat self-contradictory on this point [1]:
> HTTP/1.1 does not define how a PUT method affects the state of
an origin server.
which seems to directly contradict
> The PUT method requests that the enclosed entity be stored under the
> supplied Request-URI.
Still, representations is the only interpretation that seems coherent to
me, and that implies the possibility of some processing to establish the
state from the representation. That's very consistent with the first
quote above, and with the examples in this note.
What am I missing? Many thanks. (BTW: these are exactly the same points
Stuart has made, I think.)
------------------------------------------------------------------
Noah Mendelsohn Voice: 1-617-693-4036
IBM Corporation Fax: 1-617-693-8676
One Rogers Street
Cambridge, MA 02142
------------------------------------------------------------------
Received on Friday, 31 May 2002 19:35:21 UTC