Web Application Description Language (WADL) es una descripción XML legible por máquina de aplicaciones web basadas en HTTP (normalmente servicios web REST).[1] WADL modela los recursos proporcionados por un servicio y las relaciones entre ellos.[1] WADL está diseñado para simplificar la reutilización de servicios web basados en la arquitectura HTTP existente de la web.[1] Es independiente de la plataforma y del lenguaje y tiene como objetivo promover la reutilización de aplicaciones más allá del uso básico en un navegador web.[1]
WADL fue presentado al World Wide Web Consortium por Sun Microsystems el 31 de agosto de 2009,[1] pero el consorcio no tiene planes actualmente para estandarizarlo. WADL es el equivalente de REST al Web Services Description Language (WSDL) de SOAP, que también puede ser usado para describir servicios web REST.[3]
El servicio es descrito mediante un conjunto de elementos resource (recursos). Cada recurso contiene elementos param para describir las entradas y elementos method que describen la solicitud, request, y respuesta, response, de un recurso. El elemento request especifica cómo representar la entrada, qué tipos son requeridos y las cabeceras HTTP específicas que son requeridas. El elemento response describe la representación de la respuesta del servicio, así como cualquier información de fallos, para hacer frente a errores.
Ejemplo
El siguiente listado muestra un ejemplo de una descripción WADL para la aplicación Yahoo News Search.
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://wadl.dev.java.net/2009/02 wadl.xsd"
xmlns:tns="urn:yahoo:yn"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:yn="urn:yahoo:yn"
xmlns:ya="urn:yahoo:api"
xmlns="http://wadl.dev.java.net/2009/02">
<grammars>
<include
href="NewsSearchResponse.xsd"/>
<include
href="Error.xsd"/>
</grammars>
<resources base="http://api.search.yahoo.com/NewsSearchService/V1/">
<resource path="newsSearch">
<method name="GET" id="search">
<request>
<param name="appid" type="xsd:string"
style="query" required="true"/>
<param name="query" type="xsd:string"
style="query" required="true"/>
<param name="type" style="query" default="all">
<option value="all"/>
<option value="any"/>
<option value="phrase"/>
</param>
<param name="results" style="query" type="xsd:int" default="10"/>
<param name="start" style="query" type="xsd:int" default="1"/>
<param name="sort" style="query" default="rank">
<option value="rank"/>
<option value="date"/>
</param>
<param name="language" style="query" type="xsd:string"/>
</request>
<response status="200">
<representation mediaType="application/xml"
element="yn:ResultSet"/>
</response>
<response status="400">
<representation mediaType="application/xml"
element="ya:Error"/>
</response>
</method>
</resource>
</resources>
</application>
Generar WADL o generar código a partir de WADL
Java
Existen diversas herramientas para generar código Java a partir de un WADL existente:[4][5]
Referencias
Enlaces externos