Jump to content

Язык описания веб-приложения

Язык описания веб-приложений ( WADL ) — это машиночитаемое XML- описание HTTP на основе веб-служб . [1] WADL моделирует ресурсы, предоставляемые службой, и отношения между ними. [1] WADL предназначен для упрощения повторного использования веб-сервисов, основанных на существующей HTTP-архитектуре Интернета. [1] [2] Он не зависит от платформы и языка и направлен на содействие повторному использованию приложений, выходящему за рамки базового использования в веб-браузере. [1] WADL был представлен Консорциуму World Wide Web компанией Sun Microsystems 31 августа 2009 г. [1] , но у консорциума в настоящее время нет планов по его стандартизации. [2] . WADL — это REST- эквивалент ( SOAP языка описания веб-служб WSDL), который также можно использовать для описания веб-служб REST . [3]

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

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

 <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"  >          <имя метода   =  "GET"   id=  "search"  >            <request>              <param   name=  " appid"   type=  "xsd:string"   style=  "query"   требуется=  "true"  />              <   имя параметра=  "query"   type=  "xsd:string"   style=  "query"   требуется=  "true"  />              <   имя  параметра =  "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»  />              <   имя параметра=  «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"   тип =  "xsd: строка" />            </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> 

Создать WADL или сгенерировать код из WADL

[ редактировать ]

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

Пример WADL, созданного 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"   атрибутFormDefault=  "неквалифицированный"                 elementFormDefault=  "неквалифицированный"  >        <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=  "неограниченный"   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=  "payNotificationEndpointAddress"   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=  "/"  >          метода   < имя  = "DELETE"  >            <request></request>            <response>              <representation   mediaType=  "app/json "  />            </response>          </method>          <имя метода   =  "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>          <имя метода   =  "POST"  >            <request >              <representation   mediaType=  "app/json"  />            </request>            <ответ>             <representation   mediaType=  "app/json"  />            </response>          </method>          <method   name=  "PUT"  >            <request></request>            <response>              <representation   mediaType=  "app/json"  />            </ ответ>          </method>        </resource>        <resource   path=  "/{customerUserName}"  >          метода   < имя  = "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>          <имя метода   =  "POST"  >            <request>              <representation   mediaType=  "app/json "  />            </request>            <response>              <representation   mediaType=  "app/json"  />            </response>          </method>        </resource>        <resource   path=  "/{customerUserName}"  >          метода   < имя  = "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"  >          <   имя параметра =  "customerUserName"   style =  "template"   type =  "xs:string"  />          <имя метода   =  "GET"  >            <запрос>              <имя параметра   =  "страница"   style=  "query"   type=  "xs:int"  />            </request>            <response>              <representation   mediaType=  "app/json"  />            </response>          </method>          <имя метода   =  "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"  />          метода   < имя  = "GET"  >            <request></request>            <response>              <representation   mediaType=  "app/json"  />            </response>          </method>          <метод  name=  "POST"  >            <request>              <representation   mediaType=  "app/json"  />            </request>            <response>              <representation   mediaType=  "app/json"  />            </response>          </method>        </resource>        <resource   path=  "/{customerUserName}/apps/{appName}"  >          метода   < имя  = "PUT"  >            <request></request>            <response>              <representation   mediaType=  "app/json"  />            </response>          </method>        </resource>      </resource>    </resources>  </app> 

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б с д и Sun Microsystems (31 августа 2009 г.). «Язык описания веб-приложения: представление участника W3C 31 августа 2009 г.» . Консорциум Всемирной паутины . Проверено 12 августа 2012 г.
  2. ^ Перейти обратно: а б Консорциум Всемирной паутины (14 октября 2009 г.). «Комментарий группы к представлению «Язык описания веб-приложений»» . Консорциум Всемирной паутины . Проверено 12 августа 2012 г.
  3. ^ Лоуренс Мандель (29 мая 2008 г.). «Описание веб-служб REST с помощью WSDL 2.0: практическое руководство» . ИБМ . Проверено 12 августа 2012 г.
  4. ^ проект GitHub WADL
  5. ^ Апач CXF
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: fdffe638b9facafeb0c228d8978a56cf__1647945060
URL1:https://arc.ask3.ru/arc/aa/fd/cf/fdffe638b9facafeb0c228d8978a56cf.html
Заголовок, (Title) документа по адресу, URL1:
Web Application Description Language - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)