- From: Jacek Kopecky <jacek@systinet.com>
- Date: Mon, 4 Mar 2002 20:21:10 +0100 (CET)
- To: Mark Baker <distobj@acm.org>
- cc: Christopher Ferris <chris.ferris@sun.com>, Williams Stuart <skw@hplb.hpl.hp.com>, <xml-dist-app@w3.org>
Mark,
I apologize for using the term REST before in this
thread because I mistakenly connected REST and non-tunelling,
where the REST issue is orthogonal.
The difference in your HTTP 404 and a SOAP Fault, as I perceive
it, is the fact that there is no prescribed content for HTTP
errors whereas there is a specific structure of the content for
SOAP Faults which can be checked for. Moreover, we expect that
there will be bindings to one-way protocols and request/response
patterns built on top of these bindings. In such cases (say email
binding) it is inappropriate to signal that the transmitted
message is in fact a fault message since the information is
already in the message itself.
I still disagree that SOAP faults should be returned with HTTP
500 status code, but I acknowledge that the WG has made the
decision to support this and I don't think it is a big issue.
(I am one of these tunelists. 8-) )
What can we expect from transport bindings? They must be able to
actually (try to) transfer the infoset and that's it. If we want
always to transfer some additional data, I say stick it in the
infoset which is always transferred. Otherwise we cannot create a
TCP binding whose operation is to open a TCP connection, feed in
the XML serialization of the infoset, and close the connection.
We'd have to create a format for the "outer" data, for example
sending a MIME content with one necessary header - the faultHint.
Using the non-tunelling view in this case leads us to a
potential inconsistency (200 OK and a fault message), which IMHO
is a reason _for_ the tunelling use of HTTP or disallowing other
protocols, if we want to be consistent. I'd hate it if we say "if
the protocol binding says the message is/isn't a fault message,
this is the true information, otherwise look at the first member
of the Body."
Best regards,
Jacek Kopecky
Senior Architect, Systinet (formerly Idoox)
http://www.systinet.com/
On Mon, 4 Mar 2002, Mark Baker wrote:
> This is not a REST specific problem, it's specific to all non-tunnelled
> uses of an underlying protocol that distinguishes between "data" and
> "error" on responses (i.e. application protocols).
>
> For a real-life example of this, consider the difference between these
> two URIs.
>
> http://www.ibiblio.org/not-a-real-resource
> http://www.ibiblio.org/404
>
> The former is not a real URI, and so it is returned with a 404 status
> code. The latter identifies what is returned when a resource is not
> found, but invoking GET on it returns the *same content* as a 404, but
> with a 200 response code, ensuring that the browser can bookmark it,
> cache it, etc..
>
> Requiring that the content be different to indicate this difference in
> semantics seems like unnecessary bloat, especially when I thought we had
> already decided that reusing the fault semantics from the underlying
> protocol was a Good Thing (per our decision to not send faults over HTTP
> 200). While transport (not application) protocol bindings may need
> this, it isn't clear that there needs to be a standardized means of
> communicating it within the envelope for these protocols, especially
> when it will only complicate application protocol bindings.
>
> MB
>
Received on Monday, 4 March 2002 14:21:17 UTC