Web Application Description Language

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][2]​ 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.[2]​ 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]

Formato editar

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 editar

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 editar

Java editar

Existen diversas herramientas para generar código Java a partir de un WADL existente:[4][5]


Referencias editar

  1. a b c d e Sun Microsystems (31 de agosto de 2009). «Web Application Description Language: W3C Member Submission 31 August 2009». World Wide Web Consortium. Consultado el 12 de agosto de 2012. 
  2. a b World Wide Web Consortium (14 de octubre de 2009). «Team Comment on the "Web Application Description Language" Submission». World Wide Web Consortium. Consultado el 12 de agosto de 2012. 
  3. Lawrence Mandel (29 de mayo de 2008). «Describe REST Web services with WSDL 2.0: A how-to guide». IBM. Consultado el 12 de agosto de 2012. 
  4. java.net WADL project
  5. Apache CXF

Enlaces externos editar