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 modifica

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 modifica

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 modifica

Java modifica

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

Note modifica

  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 modifica

Collegamenti esterni modifica