Язык описания веб-приложений - Web Application Description Language

В Язык описания веб-приложений (WADL) является машиночитаемым XML описание HTTP -основан веб-сервисы.[1] WADL моделирует ресурсы, предоставляемые сервисом, и отношения между ними.[1] WADL предназначен для упрощения повторного использования веб-служб, основанных на существующей HTTP-архитектуре Интернета.[1][2] Он не зависит от платформы и языка и направлен на поощрение повторного использования приложений помимо базового использования в веб-браузере.[1]

WADL был представлен Консорциум World Wide Web к Sun Microsystems 31 августа 2009 г.[1], но у консорциума нет текущих планов по его стандартизации[2]. WADL - это ОТДЫХ эквивалент МЫЛО с Язык описания веб-сервисов (WSDL), который также можно использовать для описания ОТДЫХ веб-сервисы.[3]

Формат

Услуга описывается с помощью набора ресурс элементы. Каждый ресурс содержит парам элементы для описания входов, и метод элементы, которые описывают запрос и отклик ресурса. В запрос Элемент определяет, как представлять ввод, какие типы требуются и какие конкретные заголовки HTTP требуются. В отклик описывает представление ответа службы, а также любую информацию об ошибках для устранения ошибок.

Пример

В следующем листинге показан пример описания WADL для приложения Yahoo News Search.

 <приложение xmlns: xsi ="http://www.w3.org/2001/XMLSchema-instance"   xsi: schemaLocation ="http://wadl.dev.java.net/2009/02 wadl.xsd"   xmlns: tns ="урна: yahoo: yn" xmlns: yn ="урна: yahoo: yn" xmlns: ya ="урна: yahoo: api"  xmlns: xsd ="http://www.w3.org/2001/XMLSchema"   xmlns ="http://wadl.dev.java.net/2009/02">    <grammars>      <включить href ="NewsSearchResponse.xsd"/>      <включить href ="Error.xsd"/>    </grammars>     <ресурсы база ="http://api.search.yahoo.com/NewsSearchService/V1/">      <ресурс путь ="поиск новостей">        <метод имя ="ПОЛУЧАТЬ" id ="поиск">          <request>            <параметр имя ="приложение" type ="xsd: строка" style ="запрос" требуется ="истинный"/>            <параметр имя ="запрос" type ="xsd: строка" style ="запрос" требуется ="истинный"/>            <параметр имя ="тип" style ="запрос" по умолчанию ="все">              <вариант значение ="все"/>              <вариант значение ="любой"/>              <вариант значение ="фраза"/>            </param>            <параметр имя ="полученные результаты" style ="запрос" type ="xsd: int" по умолчанию ="10"/>            <параметр имя ="Начните" style ="запрос" type ="xsd: int" по умолчанию ="1"/>            <параметр имя ="Сортировать" style ="запрос" по умолчанию ="классифицировать">              <вариант значение ="классифицировать"/>              <вариант значение ="Дата"/>            </param>            <параметр имя ="язык" style ="запрос" type ="xsd: строка"/>          </request>          <ответ статус ="200">            <представление mediaType ="приложение / xml" element ="yn: ResultSet"/>          </response>          <ответ статус ="400">            <представление mediaType ="приложение / xml" element ="ya: Error"/>          </response>        </method>      </resource>    </resources> </application>

Сгенерируйте WADL или сгенерируйте код из WADL

Ява

Есть несколько инструментов для генерации кода Java из существующего WADL:[4][5]


Пример WADL, созданный CXF

<приложение xmlns ="http://research.sun.com/wadl/2006/10" xmlns: xs ="http://www.w3.org/2001/XMLSchema">  <grammars>     xmlns: xs ="http://www.w3.org/2001/XMLSchema" attributeFormDefault ="неквалифицированный"               elementFormDefault ="неквалифицированный">       имя ="appProfile" type ="appProfile"/>       имя ="профиль клиента" type ="профиль клиента"/>       имя ="профиль клиента">        <xs:sequence>           minOccurs ="0" имя ="accessPaymentServicesEnabled" type ="xs: boolean"/>           maxOccurs ="неограниченный" minOccurs ="0" имя ="атрибуты" nillable ="истинный" type ="атрибут"/>           minOccurs ="0" имя ="billingType" type ="xs: строка"/>           minOccurs ="0" имя ="defaultCurrency" type ="xs: строка"/>           minOccurs ="0" имя ="defaultSpendingLimitCurrency" type ="xs: строка"/>           minOccurs ="0" имя ="maximumSpendingLimit" type ="хз: двойной"/>           minOccurs ="0" имя ="minimumSpendingLimit" type ="хз: двойной"/>           minOccurs ="0" имя ="customerCategory" type ="xs: строка"/>           minOccurs ="0" имя ="customerEnabled" type ="xs: boolean"/>           minOccurs ="0" имя ="Имя Клиента" type ="xs: строка"/>           minOccurs ="0" имя ="paymentNotificationEndpointAddress" type ="xs: строка"/>           minOccurs ="0" имя ="pseCustomerId" type ="xs: строка"/>           minOccurs ="0" имя ="resourceURL" type ="xs: строка"/>           minOccurs ="0" имя =«РасчетКонтрактУид» type ="xs: строка"/>           minOccurs ="0" имя ="isSpendingLimitEnabled" type ="xs: boolean"/>           minOccurs ="0" имя ="abcCustomerId" type ="xs: строка"/>        </xs:sequence>      </xs:complexType>       имя ="атрибут">        <xs:sequence>           minOccurs ="0" имя ="ключ" type ="xs: строка"/>           minOccurs ="0" имя ="ценить" type ="xs: строка"/>        </xs:sequence>      </xs:complexType>       имя ="appProfile">        <xs:sequence>           minOccurs ="0" имя ="appEnabled" type ="xs: boolean"/>           minOccurs ="0" имя ="Название приложения" type ="xs: строка"/>           minOccurs ="0" имя ="appPassword" type ="xs: строка"/>           minOccurs ="0" имя ="appUserName" type ="xs: строка"/>           minOccurs ="0" имя ="appUuid" type ="xs: строка"/>           maxOccurs ="неограниченный" minOccurs ="0" имя ="атрибуты" nillable ="истинный" type ="атрибут"/>           minOccurs ="0" имя ="описание" type ="xs: строка"/>           minOccurs ="0" имя ="Имя Клиента" type ="xs: строка"/>           minOccurs ="0" имя ="resourceURL" type ="xs: строка"/>           minOccurs ="0" имя ="serviceContractName" type ="xs: строка"/>           minOccurs ="0" имя ="abcAppId" type ="xs: строка"/>        </xs:sequence>      </xs:complexType>    </xs:schema>  </grammars>  <ресурсы база ="http: // mpsamara-mobl-vm1: 9078 / customermanagement / v1">    <ресурс путь ="/клиенты">      <ресурс путь ="/">        <метод имя ="УДАЛИТЬ">          <request></request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>        <метод имя ="ПОЛУЧАТЬ">          <request>            <параметр имя ="страница" style ="запрос" type ="xs: int"/>            <параметр имя ="partialCustomerName" style ="запрос" type ="xs: строка"/>          </request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>        <метод имя ="ПОЧТОВЫЙ">          <request>            <представление mediaType ="приложение / json"/>          </request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>        <метод имя ="ПОЛОЖИТЬ">          <request></request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>      </resource>      <ресурс путь ="/ {customerUserName}">        <метод имя ="УДАЛИТЬ">          <request></request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>      </resource>      <ресурс путь ="/ {customerUserName}">        <параметр имя ="customerUserName" style ="шаблон" type ="xs: строка"/>        <метод имя ="ПОЛУЧАТЬ">          <request></request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>        <метод имя ="ПОЧТОВЫЙ">          <request>            <представление mediaType ="приложение / json"/>          </request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>      </resource>      <ресурс путь ="/ {customerUserName}">        <метод имя ="ПОЛОЖИТЬ">          <request></request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>      </resource>      <ресурс путь ="/ {customerUserName} / apps">        <метод имя ="УДАЛИТЬ">          <request></request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>      </resource>      <ресурс путь ="/ {customerUserName} / apps">        <параметр имя ="customerUserName" style ="шаблон" type ="xs: строка"/>        <метод имя ="ПОЛУЧАТЬ">          <request>            <параметр имя ="страница" style ="запрос" type ="xs: int"/>          </request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>        <метод имя ="ПОЧТОВЫЙ">          <request>            <представление mediaType ="приложение / json"/>          </request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>      </resource>      <ресурс путь ="/ {customerUserName} / apps">        <метод имя ="ПОЛОЖИТЬ">          <request></request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>      </resource>      <ресурс путь ="/ {customerUserName} / apps / {appName}">        <метод имя ="УДАЛИТЬ">          <request></request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>      </resource>      <ресурс путь ="/ {customerUserName} / apps / {appName}">        <параметр имя ="customerUserName" style ="шаблон" type ="xs: строка"/>        <параметр имя ="Название приложения" style ="шаблон" type ="xs: строка"/>        <метод имя ="ПОЛУЧАТЬ">          <request></request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>        <метод имя ="ПОЧТОВЫЙ">          <request>            <представление mediaType ="приложение / json"/>          </request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>      </resource>      <ресурс путь ="/ {customerUserName} / apps / {appName}">        <метод имя ="ПОЛОЖИТЬ">          <request></request>          <response>            <представление mediaType ="приложение / json"/>          </response>        </method>      </resource>    </resource>  </resources></app>

Смотрите также

Рекомендации

  1. ^ а б c d е Sun Microsystems (31 августа 2009 г.). "Язык описания веб-приложения: Заявка участников W3C 31 августа 2009 г.". Консорциум World Wide Web. Получено 12 августа 2012.
  2. ^ а б Консорциум World Wide Web (14 октября 2009 г.). "Комментарий команды к" представлению "языка описания веб-приложений". Консорциум World Wide Web. Получено 12 августа 2012.
  3. ^ Лоуренс Мандель (29 мая 2008 г.). «Описание веб-сервисов REST с WSDL 2.0: практическое руководство». IBM. Получено 12 августа 2012.
  4. ^ проект github WADL
  5. ^ Apache CXF

внешняя ссылка