Registry Manual REST API SPARQL SAWSDL BioMoby WSDL 1.1 Tutorial Contact Us

This page is to help to create WSDL 1.1 definitions for existing RESTful Web services, so these services may be registered in BioSWR registry.

WSDL 1.1 for the REST

While WSDL 1.1 has its limitations in RESTful Web services description, it still may be used for most practical use-cases. WSDL 1.1 supports "GET" and "POST" HTTP verbs, HTTP headers and provides XML and non-XML message interactions.

WSDL 1.1 for dummies

WSDL 1.1 definition consists of several basic components that completely describe the Web service.

types

Web services may use XML content for their massages. The structure of these messages is defined using XML Schema language. These XML Schemas are included in WSDL 1.1 description within <types> tag (figure 1).

<definitions>
  <types>
    <schema>
      ...
    </schema>
  </types>
</definitions>
Figure 1 WSDL 1.1 types

messages

Web services perform their work via interchanging of messages that are defined using <message> tag (figure 2).

<message name="request">
  <part name="idPDB" type="xsd:string"/>
</message>
Figure 2 WSDL 1.1 message

port types

Web service description provides an abstract interface to its functionality defined by <portType> tag (figure 3).

<wsdl:portType name="getPDBFilePort">
  <wsdl:operation name="getPDBFile">
    <wsdl:input message="tns:request"/>
    <wsdl:output message="tns:response"/>
  </wsdl:operation>
</wsdl:portType>
Figure 3 WSDL 1.1 port type

This interface contains a definition of Web service operations linking their input and output to defined messages.

bindings

Bindings are protocol-specific definitions of Web services interfaces. With reference to RESTful Web services, HTTP binding is used (figure 4).

<wsdl:binding name="getPDBFileBinding" type="tns:getPDBFilePort">
  <http:binding verb="GET"/>
  <wsdl:operation name="getPDBFile">
    <http:operation location=""/>
    <wsdl:input>
      <http:urlEncoded/>
    </wsdl:input>
    <wsdl:output>
      <mime:content type="text/plain"/>
    </wsdl:output>
  </wsdl:operation>
</wsdl:binding>
Figure 4 WSDL 1.1 bindings

It is <binding> that defines which protocol is used and how messages are encoded and sent over the wire.

services

The service part of the definition links the service implementation URL to its concrete definition (<binding>) (figure 5).

<wsdl:service name="getPDBFileService">
  <wsdl:port name="getPDBFilePort" binding="tns:getPDBFileBinding">
    <http:address location="http://mmb.irbbarcelona.org/pdb/rest.php"/>
  </wsdl:port>
</wsdl:service>
Figure 5 WSDL 1.1 service

WSDL 1.1 for the REST

Whether the service is SOAP or REST is defined in its binding part. For instance <http:binding verb="GET"/> defines that the services uses HTTP "GET" operation. Note that HTTP "GET" operation has no content, so may only pass parameters as a part of the URL string. These parameters may be either passed as URL query parameters (<http:urlEncoded/>) or as a part of the URL path (<http:urlReplacement/>). Web service content may also include XML message (<mime:mimeXml//>) or may contain other mime content (<mime:content type="text/plain"/>)

Figure 6 complete WSDL 1.1 definition example