- From: Hugo Haas <hugo@w3.org>
- Date: Wed, 14 Apr 2004 17:33:46 +0200
- To: www-ws-desc@w3.org
- Message-ID: <20040414153346.GC13576@w3.org>
We discussed issues 64[1] and 54[2] around the HTTP binding last week.
In the process of discussing issue 64, Dave and Yaron expressed that
it would be interesting to be able to specify that a particular,
RESTful, operation corresponds to a specific HTTP method (I believe
that this corresponds to option #2 in Dave's email[5]).
This email goes over the solution I proposed on last week's call. It
also proposed a simple addendum to the HTTP binding to address issue
54 at the end of the email.
Jonathan has shown[3] that it was possible to represent at the
operation level an HTTP exchange. I believe that issue 64 mainly
revolves around the syntax for such a description.
However, what is currently missing at the abstract level when one
describes such an interface operation, is its mapping to a REST
operation. I believe that we could reuse the SOAP Web Method Feature
defined in SOAP Version 1.2: Part 2[4], which isn't SOAP-specific, at
a low cost.
While defined in the SOAP specification and having "SOAP" in its name,
this feature is abstract and only tied to SOAP by two MEPs defined in
the SOAP specification: the SOAP Request-Response Message Exchange
Pattern and SOAP Response Message Exchange Pattern. I believe that it
could be used in WSDL 2.0, to characterize interface operations which
use the In-Only, Robust In-Only, and In-Out MEPs.
The following text in Part 1, inspired of the text found in SOAP 1.2
Part 2, would cover this:
2.4.5 Web method characterization
Protocols designed for use on the World Wide Web provide for
manipulation of resources using a small set of Web methods such as
GET, PUT, POST, and DELETE. These methods are formally defined in
the HTTP specification [RFC 2616], but other underlying protocols
might also support them.
The SOAP Web Method Feature defined in SOAP Version 1.2 Part 2:
Adjuncts[link] MAY be used inside an interface operation component
to indicate that this operation has the semantics of a particular
Web method, indicated by the
http://www.w3.org/2003/05/soap/features/web-method/Method property
value. The SOAP Web Method Feature MAY only be used on operations
whose message exchange pattern is In-Only, Robust In-Only, or In-Out
as defined in WSDL 2.0 Part 2.
[ NOTE: the following paragraph may be better suited for the binding
operation section. ]
When binding an interface operation using the SOAP Web Method
Feature with a binding specification supporting this feature, the
value of the
http://www.w3.org/2003/05/soap/features/web-method/Method property
SHOULD be taken into account.
It is worth noting that using the SOAP Web Method Feature at the
interface operation level does not necessarily require the operation
to be bound to SOAP with the SOAP binding.
We also need to add the following in the HTTP binding specification,
after table 3-1, to have the HTTP binding know about the SOAP Web
Method Feature:
The HTTP binding defined in this section supports the Web method
characterization as defined in WSDL 2.0 Part 1[link]. When the SOAP
Web Method Feature is used in the interface operation bound, the
value of the
http://www.w3.org/2003/05/soap/features/web-method/Method property
corresponds to the following methods, depending on the operation
style:
http://.../web-method/Method Operation Method
Property Style
--------------------------------- --------------- ----------------
"GET" URI style "get"
"POST" Multipart style "form-data-post"
"POST" any "post"
"PUT" any "put"
"DELETE" URI style "delete"
With the text above, I believe that we will be able to adequately
address Dave's #2 scenario. However, and we're getting to issue 54
here, the text above mentions a "put" and a "delete" method for the
HTTP binding which haven't been defined yet.
I believe that it would be simple to support PUT and DELETE can be
done by adding two lines to Table 3-1. in Part 3, with the following
data:
PUT
Method: "put"
Input serialization: application/xml
Output serialization: application/xml
HTTP Method: HTTP PUT
Message Patterns: In-Only, Robust In-Only, In-Out
Operation style: any
DELETE
Method: "delete"
Input serialization: application/x-www-form-urlencoded
Output serialization: application/xml
HTTP Method: HTTP DELETE
Message Patterns: In-Only, Robust In-Only, In-Out
Operation style: URI style
Note that issue 54 is about the support of all the HTTP methods, and
this proposal doesn't talk about OPTIONS, HEAD, TRACE nor CONNECT. I
don't think that OPTIONS, TRACE or CONNECT are needed, though somebody
may object. Regarding HEAD, if we do need it (which I don't think we
don't), it basically is "get" without support for In-Out.
Regards,
Hugo
1. http://www.w3.org/2002/ws/desc/2/06/issues.html#x64
2. http://www.w3.org/2002/ws/desc/2/06/issues.html#x54
3. http://lists.w3.org/Archives/Public/www-ws-desc/2004Apr/0003.html
4. http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#WebMethodFeature
5. http://lists.w3.org/Archives/Public/www-ws-desc/2004Apr/0004.html
--
Hugo Haas - W3C
mailto:hugo@w3.org - http://www.w3.org/People/Hugo/
Received on Wednesday, 14 April 2004 11:34:18 UTC