Issue 64 resolution: HTTP operations as WSDL operation names

Proposal: WSDL 2.0 defines an interface consisting of HTTP operations, WSDL interface operations can use the HTTP operation QNames, a definition of an HTTP binding, and WSDL binding operations can use the HTTP binding.

The discrete items proposed:
1. A WSDL 2.0 interface consisting of the HTTP operations.
2. WSDL interface operations extends attribute may use the WSDL 2.0 HTTP interface qname.
3. HTTP Binding Operations contain an optional location attribute.  If set, this is the default URI for any operation bindings done in the binding operations.   This attribute is in soap 1.2 support proposed resolution.
4. HTTP Binding Operations contain an optional interface attribute.  This indicates that the referenced interface is used in it's entirety.  Each operation in the interface is bound to HTTP according to the operation qname in the referenced interface.  The binding is that the local name portion of the QName is mapped to the HTTP Method.  This is very similar to the interface attribute in SOAP 1.2 web method support.
5. HTTP Binding Operations contain an optional extends attribute references a binding.  Typically this will allow the binding to define the location of the service.

This is a logical extension of a description provided by Jonathan Marsh [1]

There are 2 WSDL definitions following.  The first is the WSDL definitions for HTTP operations.  The 2nd WSDL definitions are sample definitions using the proposed interface operation and binding operation constructs.

WSDL definition of HTTP operations
========

<wsdl:definitions 
    targetNamespace="http://example.org/HTTP" 
    xmlns:http="http://example.org/HTTP" 
    xmlns:wsdl="http://www.w3.org/2004/03/wsdl" 
    
    <wsdl:interface name="HTTP">
        <wsdl:operation name="GET">
            <wsdl:input element="#any"/>
            <wsdl:output element="#any"/>
        </wsdl:operation>
                
        <wsdl:operation name="POST">
            <wsdl:input element="#any"/>
            <wsdl:output element="#any"/>
        </wsdl:operation>

        <wsdl:operation name="PUT">
            <wsdl:input element="#any"/>
            <wsdl:output element="#any"/>
        </wsdl:operation>
                
        <wsdl:operation name="DELETE">
            <wsdl:input element="#any"/>
            <wsdl:output element="#any"/>
        </wsdl:operation>
    </wsdl:interface>

    ...

    <wsdl:binding name="http:HTTP">
      <http:binding>
        <operation name="http:GET">
          <http:operation method="GET" />
        </operation>
        <operation name="http:POST">
          <http:operation method="POST" />
        </operation>
        <operation name="http:PUT">
          <http:operation method="PUT" />
        </operation>
        <operation name="http:DELETE">
          <http:operation method="DELETE" />
        </operation>
        ...
      </http:binding>
    </wsdl:binding>
</wsdl:definitions>

Sample third party WSDL definitions using the wsdl http operations and binding directly.
================

<!-- An application using HTTP directly should have a very simple wsdl definitions -->
   <wsdl:definitions 
      xmlns:myns="http://example.org/mystuff"
      xmlns:wsdl="http://www.w3.org/2004/03/wsdl" 

    <wsdl:import href="wsdl:http"/>

     <!-- interface is just HTTP -->
     <wsdl:interface name="StockQuotes" extends="wsdl:http">
     </wsdl:interface>

    <wsdl:binding name="myns:http" extends="http:HTTP">
	<!-- the binding provides a location for all the operations
      <http:binding location="..." interface="myns:StockQuotes"/>
    </wsdl:binding>

    <wsdl:binding name="myns:httpAlt">
	<!-- the binding provides a location for all the operations
      <http:binding location="..." interface="myns:StockQuotes"/>
 	<operation name="http:GET">
          <http:operation method="GET" />
        </operation>
        <operation name="http:POST">
          <http:operation method="POST" />
        </operation>
        <operation name="http:PUT">
          <http:operation method="POST" />
        </operation>
    </wsdl:binding>

   </wsdl:definitions>

Cheers,
Dave 
[1] http://lists.w3.org/Archives/Public/www-ws-desc/2004Apr/0003.html
 

Received on Wednesday, 21 April 2004 16:19:13 UTC