Webprogram Beskrivelse Språk - Web Application Description Language
The Web Application Description Language ( WADL ) er en maskinlesbar XML beskrivelse av HTTP -baserte webtjenester . WADL modellerer ressursene fra en tjeneste og forholdet mellom dem. WADL er ment å forenkle gjenbruk av webtjenester som er basert på den eksisterende HTTP -arkitekturen på nettet. Det er plattform- og språkuavhengig og har som mål å fremme gjenbruk av applikasjoner utover grunnleggende bruk i en nettleser.
WADL ble sendt til World Wide Web Consortium av Sun Microsystems 31. august 2009, men konsortiet har ingen nåværende planer om å standardisere det. WADL er REST tilsvarer SOAP 's wsdl (WSDL), som også kan brukes til å beskrive REST webtjenester.
Format
Tjenesten er beskrevet ved hjelp av et sett med ressurselementer . Hver ressurs inneholder param elementer for å beskrive de innganger og metode elementer som beskriver forespørselen og reaksjon av en ressurs. De forespørsel elementet angir hvordan å representere inngangen, hvilke typer er nødvendig og eventuelle spesifikke HTTP-hoder som kreves. Den responsen beskriver representasjon av tjenesten respons, samt eventuelle feil opplysninger, for å håndtere feil.
Eksempel
Følgende oppføring viser et eksempel på en WADL -beskrivelse for Yahoo News Search -programmet.
<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>
<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>
Generer WADL eller generer kode fra WADL
Java
Det er flere verktøy for å generere java -kode fra en eksisterende WADL:
- Apache CXF
- Java API for RESTful Web Services , og dens referanseimplementering, Jersey
Eksempel WADL Generert 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" name="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="/">
<method name="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" style="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}">
<method name="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>
</method>
<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>
</method>
</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"/>
<method name="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>
</method>
</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"/>
</response>
</method>
</resource>
<resource path="/{customerUserName}/apps/{appName}">
<method name="PUT">
<request></request>
<response>
<representation mediaType="app/json"/>
</response>
</method>
</resource>
</resource>
</resources>
</app>
Se også
Referanser
Eksterne linker
- WADL -hjemmesiden på github
- Gjeldende spesifikasjon for WADL
- Carlyle, Benjamin. "WADL for REST-style SOA" (2009-08-31) . soundadvice.id.au . Hentet 9. september 2021 .