웹 응용 프로그램 설명 언어

Web Application Description Language

WADL(Web Application Description Language)은 HTTP 기반 웹 서비스의 기계 판독이 가능한 XML 설명이다.[1]WADL은 서비스에서 제공하는 리소스와 서비스 간의 관계를 모델링한다.[1]WADL은 웹의 기존 HTTP 아키텍처를 기반으로 하는 웹 서비스의 재사용을 단순화하는 것을 목적으로 한다.[1][2]그것은 플랫폼과 언어에 독립적이며 웹 브라우저에서의 기본적인 사용을 넘어 응용 프로그램의 재사용을 촉진하는 것을 목표로 한다.[1]WADL은 2009년[1] 8월 31일 선마이크로시스템스월드와이드웹 컨소시엄에 제출했으나 컨소시엄은 현재 표준화[2] 계획이 없다.WADL은 SOAP의 WSDL(Web Services Description Language)에 해당하는 REST로, REST 웹 서비스를 설명하는 데도 사용할 수 있다.[3]

포맷

서비스는 일련의 자원 요소를 사용하여 설명된다.각 자원은 입력을 기술하는 매개변수 요소와 자원의 요청대응을 기술하는 방법 요소를 포함한다.요청 요소는 입력을 나타내는 방법, 필요한 유형 및 필요한 특정 HTTP 헤더를 지정한다.응답은 오류를 처리하기 위한 서비스 응답 및 결함 정보의 표현을 설명한다.

다음 목록은 야후 뉴스 검색 응용 프로그램에 대한 WADL 설명의 예를 보여준다.

 <응용. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://wadl.dev.java.net/2009/02 wadl.xsd"    xmlns:tns="urn:reason:yn" xmlns:yn="urn:reason:yn" xmlns:ya="urn:reason:api"   xmlns:xsd="http://www.w3.org/2001/XMLSchema"    xmlns="http://wadl.dev.java.net/2009/02">     <그래머>       << include> href="NewsSearchResponse.xsd"/>       << include> href="오류.xsd"/>     </그래머>       << resources> base="http://api.search.yahoo.com/NewsSearchService/V1/">       << resource> 경로="newssearch">         << method> 이름을 붙이다"GET" id="검색">           <<request>>             <변수 이름을 붙이다"appid" 타자를 치다"xsd:string" 스타일="query" 필수의"진짜"/>             <변수 이름을 붙이다"query" 타자를 치다"xsd:string" 스타일="query" 필수의"진짜"/>             <변수 이름을 붙이다"형식" 스타일="query" 디폴트="모두">               <선택권 값어치="모두"/>               <선택권 값어치="임의"/>               <선택권 값어치="phrase"/>             </param>             <변수 이름을 붙이다"results" 스타일="query" 타자를 치다"xsd:int" 디폴트="10"/>             <변수 이름을 붙이다"시작" 스타일="query" 타자를 치다"xsd:int" 디폴트="1"/>             <변수 이름을 붙이다"sort" 스타일="query" 디폴트="직위">               <선택권 값어치="직위"/>               <선택권 값어치="날짜"/>             </param>             <변수 이름을 붙이다"언어" 스타일="query" 타자를 치다"xsd:string"/>           </기호>           <응답하라. 지위="200">             << representation> mediaType="응용프로그램/xml" 원소="yn:ResultSet"/>           </반응>           <응답하라. 지위="400">             << representation> mediaType="응용프로그램/xml" 원소="야:에러"/>           </반응>         </기호>       </기호>     </기호>  </응용> 

WADL 생성 또는 WADL에서 코드 생성

자바

기존 WADL에서 Java 코드를 생성하기 위한 여러 도구가 있다.[4][5]

CXF에서 생성된 WADL 예제

<앱> xmlns="http://research.sun.com/wadl/2006/10" xmlns:xs="http://www.w3.org/2001/XMLSchema">   <그래머>     <xs:message> xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified"                요소양식기본값="unqualified">       <xs:message> 이름을 붙이다"appProfile" 타자를 치다"appProfile"/>       <xs:message> 이름을 붙이다"customerProfile" 타자를 치다"customerProfile"/>       <xs:complexType> 이름을 붙이다"customerProfile">         <xs:sequence>           <xs:message> minoccurs="0" 이름을 붙이다"access PaymentServicesEnabled" 타자를 치다"xs:부울"/>           <xs:message> maxoccurs="unbounded" minoccurs="0" 이름을 붙이다"attributes" 영락없는"진짜" 타자를 치다"attribute"/>           <xs:message> minoccurs="0" 이름을 붙이다"빌링타입" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"기본 통화" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"DefaultSpendingLimitCurrency" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"MaximumSpendingLimit" 타자를 치다"xs:double"/>           <xs:message> minoccurs="0" 이름을 붙이다"minimumSpendingLimit" 타자를 치다"xs:double"/>           <xs:message> minoccurs="0" 이름을 붙이다"고객 카테고리" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"고객 지원" 타자를 치다"xs:부울"/>           <xs:message> minoccurs="0" 이름을 붙이다"customerName" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"지불 통지EndpointAddress" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"pseCustomerId" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"리소스URL" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"settlementContractUuid" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"SpendingLimitEnabled" 타자를 치다"xs:부울"/>           <xs:message> minoccurs="0" 이름을 붙이다"abcCustomerId" 타자를 치다"xs:string"/>         </xs:sequence>       </xs:complexType>       <xs:complexType> 이름을 붙이다"attribute">         <xs:sequence>           <xs:message> minoccurs="0" 이름을 붙이다"키" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"가치" 타자를 치다"xs:string"/>         </xs:sequence>       </xs:complexType>       <xs:complexType> 이름을 붙이다"appProfile">         <xs:sequence>           <xs:message> minoccurs="0" 이름을 붙이다"app 사용 가능" 타자를 치다"xs:부울"/>           <xs:message> minoccurs="0" 이름을 붙이다"앱 이름" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"app Password" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"AppUserName" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"Appuuid" 타자를 치다"xs:string"/>           <xs:message> maxoccurs="unbounded" minoccurs="0" 이름을 붙이다"attributes" 영락없는"진짜" 타자를 치다"attribute"/>           <xs:message> minoccurs="0" 이름을 붙이다"description" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"customerName" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"리소스URL" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"serviceContractName" 타자를 치다"xs:string"/>           <xs:message> minoccurs="0" 이름을 붙이다"abcAppId" 타자를 치다"xs:string"/>         </xs:sequence>       </xs:complexType>     </xs:schema>   </그래머>   << resources> base="1987://mpsamara-mobl-vm1:9078/고객 관리/v1">     << resource> 경로="/message">       << resource> 경로="/">         << method> 이름을 붙이다"삭제">           [美]           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>         << method> 이름을 붙이다"GET">           <<request>>             <변수 이름을 붙이다"페이지" 스타일="query" 타자를 치다"xs:int"/>             <변수 이름을 붙이다"partialCustomerName" 스타일="query" 타자를 치다"xs:string"/>           </기호>           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>         << method> 이름을 붙이다"포스트">           <<request>>             << representation> mediaType="app/json"/>           </기호>           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>         << method> 이름을 붙이다"PUT">           [美]           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>       </기호>       << resource> 경로="/{customerUserName}">         << method> 이름을 붙이다"삭제">           [美]           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>       </기호>       << resource> 경로="/{customerUserName}">         <변수 이름을 붙이다"CustomerUserName" 스타일="template" 타자를 치다"xs:string"/>         << method> 이름을 붙이다"GET">           [美]           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>         << method> 이름을 붙이다"포스트">           <<request>>             << representation> mediaType="app/json"/>           </기호>           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>       </기호>       << resource> 경로="/{customerUserName}">         << method> 이름을 붙이다"PUT">           [美]           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>       </기호>       << resource> 경로="/{customerUserName}/apps">         << method> 이름을 붙이다"삭제">           [美]           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>       </기호>       << resource> 경로="/{customerUserName}/apps">         <변수 이름을 붙이다"CustomerUserName" 스타일="template" 타자를 치다"xs:string"/>         << method> 이름을 붙이다"GET">           <<request>>             <변수 이름을 붙이다"페이지" 스타일="query" 타자를 치다"xs:int"/>           </기호>           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>         << method> 이름을 붙이다"포스트">           <<request>>             << representation> mediaType="app/json"/>           </기호>           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>       </기호>       << resource> 경로="/{customerUserName}/apps">         << method> 이름을 붙이다"PUT">           [美]           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>       </기호>       << resource> 경로="/{customerUserName}/apps/{appName}">         << method> 이름을 붙이다"삭제">           [美]           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>       </기호>       << resource> 경로="/{customerUserName}/apps/{appName}">         <변수 이름을 붙이다"CustomerUserName" 스타일="template" 타자를 치다"xs:string"/>         <변수 이름을 붙이다"앱 이름" 스타일="template" 타자를 치다"xs:string"/>         << method> 이름을 붙이다"GET">           [美]           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>         << method> 이름을 붙이다"포스트">           <<request>>             << representation> mediaType="app/json"/>           </기호>           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>       </기호>       << resource> 경로="/{customerUserName}/apps/{appName}">         << method> 이름을 붙이다"PUT">           [美]           <응답>             << representation> mediaType="app/json"/>           </반응>         </기호>       </기호>     </기호>   </기호> </app> 

참고 항목

참조

  1. ^ a b c d e Sun Microsystems (31 August 2009). "Web Application Description Language: W3C Member Submission 31 August 2009". World Wide Web Consortium. Retrieved 12 August 2012.
  2. ^ a b World Wide Web Consortium (14 October 2009). "Team Comment on the "Web Application Description Language" Submission". World Wide Web Consortium. Retrieved 12 August 2012.
  3. ^ Lawrence Mandel (29 May 2008). "Describe REST Web services with WSDL 2.0: A how-to guide". IBM. Retrieved 12 August 2012.
  4. ^ Github WADL 프로젝트
  5. ^ 아파치 CXF

외부 링크