- From: Miles Sabin <miles@milessabin.com>
- Date: Mon, 26 May 2003 20:46:06 +0100
- To: www-ws@w3.org
- Cc: noah_mendelsohn@us.ibm.com
Mark Baker wrote,
> No, it's mostly the shared understanding of methods which improves
> visibility dramatically, not the headers.
OK, that's a clear and succinct statement of your position.
But it's _not_ just the methods which are relevant to intermediaries,
even on the REST view. The request URI and the response entities matter
too. Even tho' an intermediary knows that a GET is a GET is a GET, it
can't distinguish the different semantic intent of,
GET /foo HTTP/1.1
...
and,
GET /bar HTTP/1.1
...
without knowing something about the role those URIs play in an overall
application. The most it can know is what RFC 2616 tells it: that those
individual GETs are safe and idempotent in the technical sense defined
in that spec.
But there's a great deal more which might be relevant to an
intermediary. For instance a method which is "safe" in RFC 2616 terms
might be distinctly _unsafe_ as that's understood intuitively. For
instance, it might result in the transfer of confidential information
across an insecure channel. More interestingly, the reponse could
contain URIs which the client application might proceed to POST to. In
the latter case, consider,
GET /foo HTTP/1.1
... HTTP/1.1 200 0K
...
<uri>http://example.invalid/boom</uri>
vs.,
GET /bar HTTP/1.1
... HTTP/1.1 200 0K
...
<uri>http://example.invalid/phew</uri>
In the context of a use by a client application which will POST to a URI
returned in the response to a "safe" GET, the safety of the GETs of
/foo and /bar is coupled to the safety of subsequent POSTs to /boom and
/phew.
If we take REST seriously and use it to build hypertext-structured
distributed applications which are even slightly more sophisticated
that a simple standalone RPC we lose the trivial visibility that you're
using as a stick to beat RESTless Web Services with. If you _are_
taking REST seriously you have to think in terms of visibility wrt the
whole, probably dynamic, hypertext graph defined by your applications
resources and the links between them, and you have to take into account
the actions of _all_ the various agents which traverse or support that
graph. Focussing on single requests in isolation and their effects on
servers is *not* enough.
Cheers,
Miles
Received on Monday, 26 May 2003 15:46:20 UTC