Web Application Description Language

WADL ( Web Application Description Language) är en maskinläsbar XML - beskrivning av HTTP -baserade webbtjänster . WADL modellerar resurserna som tillhandahålls av en tjänst och relationerna mellan dem. WADL är avsett att förenkla återanvändningen av webbtjänster som är baserade på webbens befintliga HTTP-arkitektur. Det är plattforms- och språkoberoende och syftar till att främja återanvändning av applikationer utöver den grundläggande användningen i en webbläsare. WADL skickades till World Wide Web Consortium av Sun Microsystems den 31 augusti 2009, men konsortiet har inga aktuella planer på att standardisera det. WADL är REST- motsvarigheten till SOAP: s Web Services Description Language (WSDL), som också kan användas för att beskriva REST -webbtjänster.

Formatera

Tjänsten beskrivs med hjälp av en uppsättning resurselement . Varje resurs innehåller param -element för att beskriva indata, och metodelement som beskriver begäran och svar från en resurs. Begäranelementet anger hur indata ska representeras, vilka typer som krävs och eventuella specifika HTTP-rubriker som krävs . Svaret beskriver representationen av tjänstens svar, samt eventuell felinformation, för att hantera fel .

Exempel

Följande lista visar ett exempel på en WADL-beskrivning för Yahoo News Search-applikationen.

   
   
    
   
   
    
       
       
    
 
     
       
          
          
                
                
               
               
               
               
            
                
                
               
               
               
            
               
          
           
              
          
           
              
          
        
      
   
  <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:yn=  "urn:yahoo:yn"  xmlns:ya=  "urn:yahoo:api"  xmlns:xsd=  "http://www.w3.org/2001/XMLSchema"  xmlns =  "http://wadl.dev.java.net/2009/02"  >  <grammars>  <include  href=  "NewsSearchResponse.xsd"  />  <include  href=  "Error.xsd"  />  </grammars>  <resurser  base=  "http://api.search.yahoo.com/NewsSearchService/V1/"  >  <resurssökväg  =  "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 =  "typ"  style=  "query"  default=  "alla"  >  <option  value=  "alla"  />  <option  value=  "alla"  />  <option  value=  "fras"  />  </param>  <param  name=  "results"  style=  "query"  type=  "xsd:int"  default=  "10"  />  <param  name=  "start"  style=  "query"  type=  "xsd:int"  default=  "1"  />  <param  name=  "sortera"  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> 

Generera WADL eller generera kod från WADL

Java

Det finns flera verktyg för att generera java-kod från en befintlig WADL:

Exempel WADL Genererad av CXF

  
  
      
               
        
        
       
        
             
               
             
             
             
             
             
             
             
             
             
             
             
             
             
             
        
      
       
        
             
             
        
      
       
        
             
             
             
             
             
               
             
             
             
             
             
        
      
    
  
   
     
       
         
          
          
             
          
        
         
          
               
               
          
          
             
          
        
         
          
             
          
          
             
          
        
         
          
          
             
          
        
      
       
         
          
          
             
          
        
      
       
           
         
          
          
             
          
        
         
          
             
          
          
             
          
        
      
       
         
          
          
             
          
        
      
       
         
          
          
             
          
        
      
       
           
         
          
               
          
          
             
          
        
         
          
             
          
          
             
          
        
      
       
         
          
          
             
          
        
      
       
         
          
          
             
          
        
      
       
           
           
         
          
          
             
          
        
         
          
             
          
          
             
          
        
      
       
         
          
          
             
          
        
      
    
  
 <app  xmlns=  "http://research.sun.com/wadl/2006/10"  xmlns:xs=  "http://www.w3.org/2001/XMLSchema"  >  <grammars>  <xs:schema  xmlns: xs=  "http://www.w3.org/2001/XMLSchema"  attributeFormDefault=  "unqualified"  elementFormDefault=  "unqualified"  >  <xs:element  name=  "appProfile"  type=  "appProfile" /  >  <xs:element  name=  "customerProfile"  type=  "customerProfile"  />  <xs:complexType  name=  "customerProfile"  >  <xs:sequence>  <xs:element  minOccurs=  "0"  name=  "accessPaymentServicesEnabled"  type=  "xs:boolean"  />  <xs :element  maxOccurs=  "unbounded"  minOccurs=  "0"  name=  "attributes"  nillable=  "true"  type=  "attribute"  />  <xs:element  minOccurs=  "0"  name=  "billingType"  type=  "xs:string"  />  <xs:element  minOccurs=  "0"  name=  "defaultCurrency"  type=  "xs:string"  />  <xs:element  minOccurs=  "0"  name=  "defaultSpendingLimitCurrency"  type=  "xs:string"  />  <xs :element  minOccurs=  "0"  name=  "maximumSpendingLimit"  type=  "xs:double"  />  <xs:element  minOccurs=  "0"  name=  "minimumSpendingLimit"  type=  "xs:double"  />  <xs:element  minOccurs=  "0"  name=  "customerCategory"  type=  "xs:string"  />  <xs:element  minOccurs=  "0"  name=  "customerEnabled"  type=  "xs:boolean"  />  <xs:element  minOccurs=  "0"  namn =  "customerName"  type=  "xs:string"  />  <xs:element  minOccurs=  "0"  name=  "paymentNotificationEndpointAddress"  type=  "xs:string"  />  <xs:element  minOccurs=  "0"  name=  "pseCustomerId"  type=  "xs:string"  />  <xs:element  minOccurs=  "0"  name=  "resourceURL"  type=  "xs:string"  />  <xs:element  minOccurs=  "0"  name=  "settlementContractUuid"  type=  "xs  :  string"  />  <xs:element  minOccurs=  "0"  name=  "isSpendingLimitEnabled"  type=  "xs:boolean"  />  <xs:element  minOccurs=  "0"  name=  "abcCustomerId"  type=  "xs:string" /   >  </xs:sequence>  </xs:complexType>  <xs:complexType  name=  "attribute"  >  <xs:sequence>  <xs:element  minOccurs=  "0"  name=  "key"  type=  "xs:string"  / >  <xs:element  minOccurs=  "0"  name=  "value"  type=  "xs:string"  />  </xs:sequence>  </xs:complexType>  <xs:complexType  name=  "appProfile"  >  <xs:sequence >  <xs:element  minOccurs=  "0"  name=  "appEnabled"  type=  "xs:boolean"  />  <xs:element  minOccurs=  "0"  name=  "appName"  type=  "xs:string"  />  <xs: element  minOccurs=  "0"  name=  "appPassword"  type=  "xs:string"  />  <xs:element  minOccurs=  "0"  name=  "appUserName"  type=  "xs:string"  />  <xs:element  minOccurs=  " 0"  name=  "appUuid"  type=  "xs:string"  />  <xs:element  maxOccurs=  "unbounded"  minOccurs=  "0"  name=  "attributes"  nillable=  "true"  type=  "attribute"  />  <xs: element  minOccurs=  "0"  name=  "description"  type=  "xs:string"  />  <xs:element  minOccurs=  "0"  name=  "customerName"  type=  "xs:string"  />  <xs:element  minOccurs=  " 0"  name=  "resourceURL"  type=  "xs:string"  />  <xs:element  minOccurs=  "0"  name=  "serviceContractName"  type=  "xs:string"  />  <xs:element  minOccurs=  "0"  name=  "abcAppId"  type=  "xs:string"  />  </xs:sequence>  </xs:complexType>  </xs:schema>  </grammars>  <resources  base=  "http://mpsamara-mobl-vm1:9078 /customermanagement/v1"  >  <resource  path=  "/customers"  >  <resource  path=  "/"  >  <metodnamn  =  "DELETE"  >  <request></request>  <response>  <representation  mediaType=  "app/json"  />  </response>  </method>  <method  name=  "GET"  >  <request>  <param  name=  "page"  style=  "query"  type=  "xs:int"  />  <param  name=  "partialCustomerName"  stil =  "query"  type=  "xs:string"  />  </request>  <response>  <representation  mediaType=  "app/json"  />  </response>  </method>  <method  name=  "POST"  >  <request>  <representation  mediaType=  "app/json"  />  </request>  <response>  <representation  mediaType=  "app/json"  />  </response>  </method>  <method  name=  "PUT"  >  <request></ request>  <response>  <representation  mediaType=  "app/json"  />  </response>  </method>  </resource>  <resource  path=  "/{customerUserName}"  >  <metodnamn  =  "DELETE"  >  <request> </request>  <response>  <representation  mediaType=  "app/json"  />  </response>  </method>  </resource>  <resource  path=  "/{customerUserName}"  >  <param  name=  "customerUserName"  style=  "template"  type=  "xs:string"  />  <method  name=  "GET"  >  <request></request>  <response>  <representation  mediaType=  "app/json"  />  </response>  </metod>  < method  name=  "POST"  >  <request>  <representation  mediaType=  "app/json"  />  </request>  <response>  <representation  mediaType=  "app/json"  />  </response>  </method>  </resource >  <resource  path=  "/{customerUserName}"  >  <method  name=  "PUT"  >  <request></request>  <response>  <representation  mediaType=  "app/json"  />  </response>  </metod>  < /resource>  <resource  path=  "/{customerUserName}/apps"  >  <method  name=  "DELETE"  >  <request></request>  <response>  <representation  mediaType=  "app/json"  />  </response>  < /method>  </resource>  <resource  path=  "/{customerUserName}/apps"  >  <param  name=  "customerUserName"  style=  "template"  type=  "xs:string"  />  <metodnamn  =  "GET"  >  < request>  <param  name=  "page"  style=  "query"  type=  "xs:int"  />  </request>  <response>  <representation  mediaType=  "app/json"  />  </response>  </method>  < method  name=  "POST"  >  <request>  <representation  mediaType=  "app/json"  />  </request>  <response>  <representation  mediaType=  "app/json"  />  </response>  </method>  </resource >  <resource  path=  "/{customerUserName}/apps"  >  <method  name=  "PUT"  >  <request></request>  <response>  <representation  mediaType=  "app/json"  />  </response>  </metod >  </resource>  <resource  path=  "/{customerUserName}/apps/{appName}"  >  <method  name=  "DELETE"  >  <request></request>  <response>  <representation  mediaType=  "app/json"  / >  </response>  </method>  </resource>  <resource  path=  "/{customerUserName}/apps/{appName}"  >  <param  name=  "customerUserName"  style=  "template"  type=  "xs:string"  / >  <param  name=  "appName"  style=  "template"  type=  "xs:string"  />  <method  name=  "GET"  >  <request></request>  <response>  <representation  mediaType=  "app/json"  / >  </response>  </method>  <method  name=  "POST"  >  <request>  <representation  mediaType=  "app/json"  />  </request>  <response>  <representation  mediaType=  "app/json"  />  < /respons>  </method>  </resource>  <resource  path=  "/{customerUserName}/apps/{appName}"  >  <method  name=  "PUT"  >  <request></request>  <response>  <representation  mediaType=  "app/json"  />  </response>  </method>  </resource>  </resource>  </resources>  </app> 

Se även

externa länkar