Язык описания веб-приложений - 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]
- Apache CXF
- API Java для веб-служб RESTful и его эталонная реализация, Джерси
Пример 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>
Смотрите также
Рекомендации
- ^ а б c d е Sun Microsystems (31 августа 2009 г.). "Язык описания веб-приложения: Заявка участников W3C 31 августа 2009 г.". Консорциум World Wide Web. Получено 12 августа 2012.
- ^ а б Консорциум World Wide Web (14 октября 2009 г.). "Комментарий команды к" представлению "языка описания веб-приложений". Консорциум World Wide Web. Получено 12 августа 2012.
- ^ Лоуренс Мандель (29 мая 2008 г.). «Описание веб-сервисов REST с WSDL 2.0: практическое руководство». IBM. Получено 12 августа 2012.
- ^ проект github WADL
- ^ Apache CXF