- From: Tim Bray <tbray@textuality.com>
- Date: Sun, 21 Apr 2002 15:25:17 -0700
- To: David Orchard <dorchard@bea.com>
- Cc: www-tag@w3.org
David Orchard wrote: > Clearly there is not consensus in the community on this issue. First, a procedural point. It is not the TAG's role to ascertain what the consensus of the community is. The TAG's role is to write down how the web architecture actually works and to do whatever possible to ensure that standards and tools avoid breaking it. And as of last meeting, there was what smelled to me like consensus on the TAG that the GET method SHOULD be used for safe/idempotent operations, per the current Web architecture. With a single dissenting voice, not surprisingly Dave's. However, I don't believe that in fact Dave disagrees with the proposition that the Web architecture as it stands today does call for the use of GET in this scenario. I believe he's pointing out the obvious reality that Web Services just don't do it that way and a lot of people think they are useful, so let's not derail them. This is a reasonable point of view and one that I agree with. (Although I'm beginning to wonder if so-called Web Services really have anything to do with the Web). Given that, it occurs to me that there is a reasonably straightforward way forward that makes everyone happy. There is a certain proportion of Web Services operations that smell a lot like read-only procedure calls: stock market quotes, the new google API, and so on. These are precisely the ones that it would be nice to be able to bookmark and GET and cache and so on, and SOAP currently gets in the way. But it doesn't have to. I propose that for those proportion of SOAP requests that consist of a service name plus a sequence of name-value-pair arguments, we devise a simple url encoding. Wouldn't be hard. Here's the canonical RPC example from http://www.w3.org/TR/xmlp-scenarios <r:GetLastTradePrice env:encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:r="http://example.org/2001/06/quotes"> <r:Symbol>DEF</r:Symbol></r:GetLastTradingPrice> This becomes something like http://example.org/SoapGet?serv=http://example.org/2001/06/quotes&Symbol=DEF I don't provide the encodingStyle - let's assert that if you do it this way you get soap-encoding by default (or in fact that that's all you can have). To simplify, let's say that the service name is by a default a relative URI reference with the base established by the that of the URI itself, thus http://example.org/SoapGet?serv=/2001/06/quotes&Symbol=DEF Nothing else changes - you still get the same XML back. You need to establish a convention for signaling that this url-encoded call be routed through a SOAP handler. Given that, I could write the apache code in an afternoon to, on the server side, fake up the XML SOAP envelope and pass it to the SOAP handler which would never notice the difference. Obviously there are a ton of SOAP scenarios where this won't work, but that's OK, they probably don't benefit from GET semantics anyhow, and this is clearly not trying to be a complete solution. The best group of people to do this would be those working on SOAP itself, but if they're too late in the process or not interested or whatever, a canonical way to do this could be hacked out and defined and implemented and done by this time next week. And I think it makes the problem go away. -Tim
Received on Sunday, 21 April 2002 18:25:35 UTC