Re: Issue #12: HTTP Status Codes 500 v 200

Mark, your arguments highlight the fundamental decision that needs to be
made: is XMLP/SOAP a protocol in it's own right (layered on top of HTTP) or
is it an extension of HTTP? However, even in your discussion I don't think
this is clear. You illustrate how HTTP status codes _can_be_ extended (or
used) to accomodate an XMLP/SOAP processor, but the very fact that you're
able to correlate the SOAP faults with HTTP status codes says to me that
SOAP was clearly designed as a separate protocol.

FWIW, I'd prefer that they be layered protocols. This would provide true
independence from HTTP and the ability to map XMLP to other
transfer/transport protocols more cleanly. As for the 'pre-existing
applications' argument, I'd suggest that they treat the HTTP status codes
more carefully. If these applications are assuming some target application
state based on the HTTP status they're just wrong. Also, on the scenario
questions I believe the guideline is that if the request message could not
be delivered for some reason (any reason - like an invalid URL or failure
to start the target app.) than HTTP should return a failure status. If the
message was delivered but a higher-level protocol error ocurred, then HTTP
should return a success status (because it was successful in its mission)
and the higher-level protocol should handle its own error.

BTW - can anyone tell me the difference between a transfer protocol and a
transport protocol? And for what practical purpose would anyone need to
make such a distinction? If at all possible, please don't unnecessarily
overcomplicate life any more than has already been done. Thanks.

Michael A. Rossi
Computer Sciences Corporation
mailto:mrossi@csc.com
856-983-4400 x4911



                                                                                                                       
                    Mark Baker                                                                                         
                    <distobj@acm.org>        To:     xml-dist-app@w3.org                                               
                    Sent by:                 cc:                                                                       
                    xml-dist-app-requ        Subject:     Re: Issue #12: HTTP Status Codes 500 v 200                   
                    est@w3.org                                                                                         
                                                                                                                       
                                                                                                                       
                    06/03/01 02:44 AM                                                                                  
                                                                                                                       
                                                                                                                       




My 2c on this issue (I like tackling the tough ones 8-)

SOAP is one way of extending HTTP's (or many other application
protocol's) semantics.  It is *not* a layer above HTTP in the same way
that WebDAV isn't a layer on top of HTTP.  SOAP and WebDAV are both
extensions of HTTP.  SOAP just happens to extend HTTP in a way that HTTP
wasn't expecting (to say the least - and FWIW, this isn't a good thing).

A SOAP fault carried on an HTTP response must therefore use HTTP
semantics as best it can.  There are four types of SOAP fault;

- version mismatch
- must understand
- client
- server

The last one clearly maps quite cleanly to a 500.  The third one maps
cleanly to 400. (*)  The other two aren't as straightforward.

The "Version Mismatch" fault looks a bit like a 505 ("HTTP Version Not
Supported"), but not exactly, since 505 is specific to HTTP versioning,
not SOAP versioning.  But I certainly believe that either 500, or a new
5xx code should communicate the intent.

The "Must Understand" fault is quite close to a 417 ("Expectation
Failed" - part of the HTTP 1.1 Expect feature).  It's a 4xx ("Client
Error") presumably because if the request hadn't been sent with that
Expect header, you'd be fine.  I suggest that either 400 or a new 4xx
status code (not 417, as that's specific to Expect) be used for must
understand as well.

(*) I would normally suggest that using the specific 5xx or 4xx status
codes (rather than 400 and 500) should be used, but as SOAP is trying to
be application-protocol neutral, I can understand its desire not to.

I hope that was helpful.

MB

Received on Monday, 4 June 2001 11:30:52 UTC