7.4 Service Description
Whereas WS-* Web services rely on a standard, machine-processable,
strongly-typed XML interface description language (WSDL),
RESTful Web services have adoped a more human-oriented approach
based on informal, textual descriptions, giving developers
extensive documentation of the API of the provided service [32].
As a consequence, WSDL tools can automatically generate client
stub code for most programming languages, masking the complexity
of remotely interacting with a service. For RESTful Web services,
developers have to manually write the code to assemble the
resource URIs and correctly encode/decode the exchanged resource
representations. Having good documentation greatly helps to reduce
the amount of trial and error involved in the process, but is
no substitute for using a compiler of a “real” interface description
language. To address this shortcoming, the Web Application Description
Language (WADL [18]) was recently proposed. Also the
latest WSDL version 2.0 could be applied to describe RESTful Web
services, thanks to its more fine-grained control over the HTTP
binding and the possibility of supporting non-SOAP message encodings.
In general, having an interface description language to specify
service contracts is not only beneficial for simplifying repetitive
development tasks, but also helps to catch incompatibilities caused
by changes of service interfaces early in the development process.
Thanks to the strong typing features of WSDL, clients will break at
compile time. This would also benefit RESTful Web services, insofar
changes to the URI naming scheme11 and resource representations
are concerned, since due to the uniform interface principle
the actual set of operations applicable to a resource never changes
(as already discussed).