- From: Hugo Haas <hugo@w3.org>
- Date: Fri, 16 Apr 2004 09:13:33 +0200
- To: www-ws-desc@w3.org
- Message-ID: <20040416071333.GA5652@w3.org>
Following our discussion about support of WebDAV and the HTTP Extension Framework in the HTTP binding, I have taken an action to look into why the current binding doesn't allow one to specify the HTTP method directly in the binding, and if it's possible to change it. As it stands, the HTTP binding lets you specify which HTTP method in an indirect manner: <http:operation method="post|get|form-data-post" /> Those binding methods are specified in table 3-1 in section 3.1.1.1 of Part 3. They correspond to an HTTP method, an input and output serialization, a set of possible MEPs, operation styles. The bottom line is that, in order for a method to be supported by the binding, it needs to be in this table. The proposal made yesterday by Sanjiva was to specify the HTTP method directly instead: <http:operation method="GET|POST|PUT|..." /> The advantage of this is that one could specify here any HTTP method, e.g. PROPPATCH or M-GET. However, table 3-1 shows that knowing the method alone isn't sufficient. For example, there are two ways of serializing the input of a POST: application/xml or multipart/form-data. So we would need to add another attribute for input serialization. E.g., for POST: <http:operation method="POST" input="application/xml|multipart/form-data" /> We step here into issue 147, which is about allowing arbitrary content type. I believe that issues 54 and 147 boil down to a trade-off between simplicity and extensibility. The current situation is simple: a fixed set of usable HTTP methods is defined in table 3-1, and this table also defines their input and output serializations. If somebody wanted to use WebDAV or the HTTP Extension Framework, they would need to define a binding for them. If we move to a more flexible solution, then table 3-1 will contain the following information: - if the HTTP method MMM is specified, then only the following serializations are valid (e.g. for GET only application/x-www-form-urlencoded will be allowed) - if the HTTP method MMM is specified and if the operation style is sss, then the following input serializations can be used (e.g. for POST to use multipart/form-data, Multipart style is needed). Other HTTP methods would be allowed, but we wouldn't be able to constrain the operation style nor the serialization, e.g. to have an M-GET binding operation which actually makes sense. I am afraid that such a generalization is going to make the HTTP binding more complex for most of the use cases. Our charter requires us to provide a binding for GET and POST, and to look into PUT and DELETE. In light of the proposal I made for issue 64[1] and of the SOAP Web Method Feature, adding PUT and DELETE to our current binding is easy and we should do it by adding the two lines I proposed in [1] to table 3-1. However, allowing for any method looks like it is going to make our spec more complex for the simple cases that pretty much everybody will use. I will add that in order to fully support the HTTP extension framework, we would need support for arbitrary headers (issue 55), or better, have support for mandatory and optional extensions built directly into the bindings, but the latter is definitely out of scope for us. Note that we may need to make some progress on 147 before actually closing issue 54, as they are connected. Regards, Hugo 1. http://lists.w3.org/Archives/Public/www-ws-desc/2004Apr/0031.html -- Hugo Haas - W3C mailto:hugo@w3.org - http://www.w3.org/People/Hugo/
Received on Friday, 16 April 2004 03:14:41 UTC