Web Application Description Language

Web Application Description Language (WADL) è un linguaggio formale in formato XML utilizzato per la creazione di "documenti" per la descrizione di Web service basati su HTTP.[1] Lo scopo di WADL è quello di semplificare e incoraggiare il riutilizzo di Web service basati su architetture HTTP già esistenti nel Web.[1][2]

WADL è stato presentato all'attenzione del World Wide Web Consortium dalla Sun Microsystems il 31 agosto 2009,[1] ma il W3C non ha tuttora in programma la sua standardizzazione.[2] Il linguaggio è l'equivalente RESTful del Web Services Description Language (WSDL) dei Web service SOAP, il quale può essere utilizzato anche per descrivere servizi REST.[3]

Formato

Il servizio è descritto utilizzando un insieme di elementi resource ("risorsa"). Ciascuna di queste risorse contiene degli elementi method (in cui è possibile specificare il metodo HTTP), i quali a loro volta sono formati da una request e una o più response. L'elemento request specifica com'è rappresentato l'input del metodo, quali sono i tipi di dato richiesti ed eventuali header HTTP richiesti. L'elemento response descrive l'output del Web service, incluse le risposte di errore previste.

Esempio

Segue l'esempio di una descrizione WADL per l'applicazione Yahoo News Search, preso dalla submission della Sun Microsystems al W3C.[1]

 <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>

Strumenti

Java

Esistono vari strumenti per generare codice Java da una descrizione WADL esistente (o viceversa):[4][5]

  • Apache CXF
  • Java API for RESTful Web Services

Note

  1. ^ a b c d (EN) Marc Hadley, Sun Microsystems, Web Application Description Language: W3C Member Submission 31 August 2009, su w3.org, World Wide Web Consortium, 31 agosto 2009. URL consultato il 12 agosto 2012.
  2. ^ a b (EN) World Wide Web Consortium, Team Comment on the "Web Application Description Language" Submission, su w3.org, World Wide Web Consortium, 14 ottobre 2009. URL consultato il 12 agosto 2012.
  3. ^ (EN) Lawrence Mandel, Describe REST Web services with WSDL 2.0: A how-to guide, su ibm.com, IBM, 29 maggio 2008. URL consultato il 12 agosto 2012.
  4. ^ java.net WADL project
  5. ^ Apache CXF

Voci correlate

  • Specifiche OpenAPI
  • RAML

Collegamenti esterni

  • (EN) WADL home page, su java.net.
  • (EN) Specifica corrente di WADL (PDF), su java.net. URL consultato il 5 maggio 2019 (archiviato dall'url originale il 21 settembre 2016).
  Portale Informatica
  Portale Internet