- From: Christopher Ferris <chris.ferris@sun.com>
- Date: Fri, 26 Apr 2002 12:25:41 -0400
- To: noah_mendelsohn@us.ibm.com
- CC: "Williams, Stuart" <skw@hplb.hpl.hp.com>, www-tag@w3.org
Noah, Some comments follow. Thanks for taking this thread in a constructive direction! :) Cheers, Chris noah_mendelsohn@us.ibm.com wrote: > Stuart Williams writes: > > >>> it occurred to me that simply 'overloading' >>>a null request-message (ie. a requesting >>>node that requests an exchange and presents >>>no outbound infoset from which to from the >>>entity body of an HTTP request) to use >>>HTTP GET would yield something of very similar >>>spirit to your proposal. >>> > > I think you're proposing a simple HTTP GET, returning a SOAP envelope. > That's an OK thing to do, but at the responding node it's not SOAP; the > SOAP processing model doesn't apply, SOAP faults can't be generated, it > can't be relayed through a SOAP intermediary perhaps through another > underlying protocol. It's essentially an HTTP pull, causing a one-way > SOAP message to be sent to the requestor. Sensible, but different. Hmmm... the magical GET SOAP message you describe has no headers and so what is there for the SOAP processing model to operate upon? 1. Determine the set of roles in which the node is to act. The contents of the SOAP envelope, including any header blocks and the body, MAY be inspected in making such determination. 2. Identify all header blocks targeted at the node that are mandatory. 3. If one or more of the header blocks identified in the preceding step are not understood by the node then generate a single SOAP fault with a value of "env:MustUnderstand" for faultcode (see 5.4.8 Must Understand Faults). If such a fault is generated, any further processing MUST NOT be done. Faults relating to the contents of the body MUST NOT be generated in this step. 4. Process all header blocks targeted at the node and, in the case of an ultimate SOAP receiver, the SOAP body. A SOAP node MUST process all SOAP header blocks targeted at it. A SOAP node MAY choose to ignore the processing implied by non-mandatory SOAP header blocks targeted at it. 5. In the case of a SOAP intermediary, and where the message is to be forwarded further along the message path, remove all SOAP header blocks targeted at the node, and possibly insert new SOAP header blocks. What is there left on which to Fault? > > My SOAP envelope is not magical (sorry for the cute phraseology). It's a > legal and appropriate SOAP envelope that says exactly what it means: GET > the resource. The fact that it has a clean mapping to HTTP is > intentional, but not its only use. It can appropriately be used in any > context where a RESTful GET is intended. In principle (though I ruled it > out in the initial proposal), it can be extended to be used with other > SOAP headers, as long as we watch out for safety issues. Most > importantly, it's a SOAP message useable with the usual request/response > message exchange pattern, and processed by the usual SOAP processing rules > at the responding node. But not all use of SOAP is request/response, that's just one MEP of a universe of possible MEPs. In fact, Part 1 says nothing about responses until you get to the Binding Framework section which only talks about responses in terms of MEPs that one might define. In that sense, SOAP is a *message* protocol, not a *messaging* protocol and maybe that's where much of the confusion lies. > > That said, I have no problem with a (possibly) additional specification > calling for a simple HTTP GET of a SOAP message (interestingly, and this > is intentional, the results on the wire would be essentially > indistinguishable). The difference comes in whether the responding node exactly, so what I guess I'm missing here is why make the distinction when none really exists? If you send an HTTP GET to a SOAP endpoint URI that uses the HTTP protocol and that endpoint only supported the HTTP POST method, it returns a 415 Method Not Supported HTTP response. If it *does* support the GET method, whether the binding turned the naked URI into your magical GET SOAP message and handed this off to a SOAP processor or whether there was just a Servlet or CGI that invoked some logic and generated a SOAP message to be returned on the HTTP response is purely implementation detail about which SOAP has nothing to say, correct? > is implemented as a SOAP endpoint or merely an HTTP server. If we want to > distinguish these cases, we can make appropriate use of SOAPAction. > > ------------------------------------------------------------------ > Noah Mendelsohn Voice: 1-617-693-4036 > IBM Corporation Fax: 1-617-693-8676 > One Rogers Street > Cambridge, MA 02142 > ------------------------------------------------------------------ > > > > >
Received on Friday, 26 April 2002 12:27:09 UTC