WADL을 사용하는 이유는 무엇입니까?


81

RESTful을 설명하기 위해 모든 리소스에 자체 URI가 있다고 말할 수 있습니다. HTTP GET, POST, PUT 및 DELETE를 사용하여 이러한 리소스에서 작업 할 수 있습니다. 모든 자원은 대표적입니다. 리소스를 사용하려는 사람은 누구나 브라우저 또는 REST 클라이언트를 통해 사용할 수 있습니다.

이것이 RESTful 아키텍처의 주요 아이디어입니다. 이 아키텍처는 인터넷에서 서비스를 허용합니다. 그렇다면이 아키텍처에 WADL이 필요한 이유는 무엇입니까? 표준 HTTP가 제공하지 않는 WADL은 무엇을 제공합니까? WADL이 존재해야하는 이유는 무엇입니까?


에서 위키 백과 : 웹 응용 프로그램 설명 언어 (WADL)는 HTTP 기반 웹 서비스의 기계 판독 XML 설명이다.
Ricardo

답변:


154

WADL의 목적은 계약 을 정의하는 것 입니다. 계약은 한 당사자가 다른 당사자를 호출하는 방법을 지정합니다.

웹 애플리케이션을 처음부터 만들 때 계약 및 WADL이 필요하지 않습니다 .

시스템을 다른 시스템과 통합하고 개발 팀과 명확하게 통신 할 수 있으면 계약 및 WADL이 필요하지 않습니다 (전화를 걸어 상황을 명확히 할 수 있기 때문입니다).

그러나 복잡한 엔터프라이즈 시스템을 여러 다른 회사 (또는 연방 기관)에서 유지 관리하는 다른 여러 복잡한 엔터프라이즈 시스템과 통합 할 때 가능한 한 엄격하게 정의 된 통신 계약 을 원한다고 믿습니다 . 그런 다음 WADL 또는 Open Specification이 필요합니다. 심하게 필요합니다 .

기업 배경이 약한 사람들은 전체 IT를 독립적으로 개발 된 별도의 웹 애플리케이션 모음으로 보는 경향이 있습니다. 그러나 기업의 현실은 때때로 어렵습니다. 통합해야하는 응용 프로그램을 개발하는 사람들에게 전화를 걸거나 편지를 쓸 수도없는 경우도 있습니다. 더 이상 유지되지 않는 레거시 애플리케이션과 통신하는 경우가 있습니다. 실행 만하면 제대로 통신하는 방법을 알아 내야합니다. 그런 상황에서는 계약이 필요합니다 .

실제로 클라이언트 생성은 계약 정의의 사소한 기능입니다. 그냥 장난감 일뿐입니다. Contract는 통합 규칙을 명확하게 전달하기 위해 나쁜 의사 소통자를 강제합니다. 이것이 WADL이나 Open Specification 등을 사용하는 주된 이유입니다.


7
"--- IT SAVES ASS"가 가장 좋았습니다. WADL 파일에서 사용할 수있는 PHP 코드 생성기가 있습니까?
Jatin Dhoot 2015 년

webapp에서 wadl이 필요하지 않은 경우. 값 검색 요청을 보내려면 어떻게해야합니까?
Jesse

예를 들어 다른 팀에 클라이언트 SDK를 제공하도록 요청할 수 있습니다.
Henryk Konsek

웹 / REST API (WA)를 불충분 한 문서로 사용하고 통합하는 방법은 무엇입니까? 공식 WADL (WSDL과 유사) 의 혜택을 1-sentenced :Contract enforces bad communicators to communicate integration rules clearly.
hc_dev

37

WADL을 사용한다는 것은 사용자가 앞뒤로 전달하는 데이터 / 문서를 실제로 정의 할 수있을만큼 정중 할 수 있음을 의미합니다. 일부 XML 조각을 전달한다고 가정하면 실제로 정의 된 스키마의 일부일 수 있습니다.

DL을 사용하여 코드를 생성하는지 여부는 나에게별로 중요하지 않습니다. 제 생각에 중요한 것은 비즈니스 파트너 간의 인터페이스에 대해 공식적인 합의를하는 것이 중요하다는 것입니다. 전달 된 내용 분명하더라도 누군가 이전 인터페이스를 변경하면 나중에 누가 무엇을 수정해야하는지 식별하는 데 도움이됩니다.

데이터 형식은 동사 이름만큼이나 인터페이스의 일부입니다.


10
REST를 사용하려면 앞뒤로 전달하는 데이터 / 문서를 정의해야합니다. WADL의 문제점은 API 정의의 일부가 아니어야하는 끝점을 정의하려고한다는 것입니다.
Darrel Miller

4
Derrel, 클라이언트를 작성한 적이있는 단일 웹 서비스에 대해 알지 못합니다.이 서비스에는 사용 된 단일 엔드 포인트가 없습니다.
Brill Pappin 2011 년

30

WADL은 WSDL을 기반으로 클라이언트 측 코드를 생성하기 위해 코드 생성기를 사용하는 것이 일반적인 SOAP 세계에서 온 사람들에게 어필합니다. 서버 엔드 포인트에 연결된 클라이언트 코드를 생성하기 때문에 메커니즘이 REST에서 유용하다고 생각하지 않습니다.

미디어 유형을 올바르게 정의하고 해당 미디어 유형 내에서 하이퍼 미디어를 사용한다면 WADL이 필요하지 않다고 생각합니다. 사용 가능한 끝점에 대한 설명은 미디어 유형 정의 자체에 포함되어 있습니다. 그리고 지금 스스로에게 말하고 있지만 application / xml에 사용 가능한 하이퍼 링크에 대한 정보가 포함되어 있지 않다면 BINGO라고합니다. 그렇기 때문에 application / xml 및 application / json이 REST에 적합한 미디어 유형이라고 생각하지 않습니다. XML이나 JSON을 사용하지 않는다는 것이 아니라 일반적인 미디어 유형 이름을 사용하지 마십시오.

WADL의 또 다른 매력은 REST 서비스를 문서화하기위한 것입니다. 불행히도 WADL이 서버 측 엔드 포인트를 문서화하려고 시도함에 따라 개발자를 잘못된 경로로 안내합니다. REST 서비스를 문서화하는 것은 주로 미디어 유형에 초점을 맞춰야합니다. 클라이언트 개발자는 루트 URL이 아닌 다른 URL을 몰라도 REST 클라이언트를 작성할 수 있어야합니다.


19
WADL은 또한 표준 형식의 공식적인 정의를 가져야한다고 말하는 상사가있는 사람들에게도 매력적입니다. 이것이 최선의 방법이라고 말하는 것이 아니라 "조직 상자를 확인"하는 것이 유용 할 때가 있습니다. 그것이 과잉이라는 사실은 상사에게 잃을 수 있습니다. 그러나 공식적인 def 파일이 있으면 다른 모든 멋진 기업 아이들이 빨아들이는 SOAP 크랙 파이프로 다시 밀려 나가는 것을 막을 수 있습니다.
Roboprog

2
@Roboprog 엔드 포인트 대신 미디어 유형을 문서화하십시오. IANA 레지스트리에는 좋은 예가 많이 있습니다. 또한 Sun Cloud API가 좋은 예입니다. 엔드 포인트를 문서화하는 것은 미래에 좋지 않다고 상사를 설득해야합니다.
Darrel Miller

1
또한 하루 종일 클라이언트 코드를 작성하는 작업이 더 많은 개발자에게도 편리합니다.
Brill Pappin 2011 년

1
@cboettig 스키마는 구문 규칙의 집합 일 뿐이며 의미론을 추가하지 않습니다. 의미론을 추가하려면 미디어 유형 또는 프로필과 같은 다른 메커니즘이 필요합니다.
Darrel Miller

1
@cboettig 사람들은 의미론을 네임 스페이스 요소 및 속성과 연관 시키지만 그렇게하기위한 표준화 된 프로세스는 없습니다. 미디어 유형에는 의미를 정의하는 사양을 가리키는 공식 레지스트리가 있습니다. iana.org/assignments/media-types/application
Darrel Miller

16

WADL을 사용하면 코드, 테스트 및 문서를 생성 할 수 있습니다. 실제로 WADL을 활용하는 매우 유용한 도구는 거의 없습니다 . 여기에서 몇 가지 예를 볼 수 있습니다 . Fielding의 논문에서 설명한 것처럼 "순수한"REST의 문제는 Hypermedia를 지원하는 클라이언트를 작성하는 것입니다 (예를 들어 Java Swing 기반 클라이언트 애플리케이션을 작성한다고 상상해보십시오). WADL을 사용하면이 작업이 완전히 자동화되어 제 생각에는 큰 이점입니다. 테스트도 쉬워집니다.


16

설명하기 전에 대부분의 순수한 REST 극단 주의자들이 그것을 지구 끝까지 조롱 할 것이라고 말하겠습니다. 나는 그들에게 동의하지 않습니다. 차라리 뭔가를 해내 고 싶기 때문입니다.

WADL은 웹 서비스 API에 대한 설명으로, WSDL이 SOAP 유형 웹 서비스 용인 것과 비슷하며 RESTful 인터페이스 (WSDL이 부족한 것)와 더 잘 조정되도록 설계되었습니다.

내 경험상 주요 용도는 서비스를 호출 할 수있는 클라이언트 코드를 생성 할 수 있도록하는 것입니다 (말 그대로 작업 시간을 절약하는 매우 큰 API 인 경우 편리함). 또한 REST와 유사한 인터페이스를 문서화하는 목적으로도 사용됩니다.


3
물론입니다. 좋은 답변입니다. 저항은 REST를 전혀 원하지 않는 하드 코어 SOAP 사람들과 추가 작업을 원하지 않는 일부 하드 코어 REST 카우보이로부터 나온 것 같습니다. 형식적인 문서를 갖는 것은 스타트 업에서 작은 API를위한 시간 낭비 일지라도 "기업"에서 가질 수있는 좋은 무화과 잎사귀입니다.
Roboprog

1
제 경험상 WADL과 같은 이유는 세 가지입니다.-많은 훌륭한 개발자가 REST를 모릅니다. -근무 시간에 문서 또는 API를 사용하면 작업 속도가 엄청나게 빨라집니다. - 다른 사람이 동일한 방식으로 REST 호출을 구현했다고 가정 할 수 없습니다 . REST 전도자조차도 동의 할 수 없습니다. 환경이 DELETE 또는 PUT 호출을 실행하도록 허용하지 않는 경우에도 실행 했으므로 GET 및 PUT 호출 만 사용하는 REST와 유사한 인터페이스를 얻습니다. 그러면 문서화가 중요해집니다.
Brill Pappin 2011 년

펑키 한 POST 옵션으로 PUT 및 DELETE를 속이는 것처럼 GET 및 POST 을 의미한다고 확신합니다 . 아아 ...
Roboprog 2011


3

REST 서비스를 노출하고 싶을 때 가장 좋은 방법은 WADL을 생성하고 소비자와 공유하는 것입니다 (SOAP 기반 웹 서비스의 WSDL과 유사) .WADL은 서비스를 모든 위치에서 설명하는 데 사용됩니다.


0

WADL은 사용할 필요가 없습니다. 그러나 복잡한 기존 애플리케이션으로 작업하고 있고 EJB / SOAP 서비스 호출을 대체하여 REST 서비스 호출을 구현하려는 경우 WADL을 사용하는 것이 매우 안전하고 좋은 방법입니다. WADL을 사용하여 클라이언트 측 자바 스텁을 생성하면 서비스와 동기화됩니다.

wadl2java maven 플러그인의 도움으로 WADL 파일을 사용하여 클라이언트 측 Java 스텁을 생성 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.