WAful API를 설명하기 위해 WADL을 사용해야합니까?


27

제대로 RESTful 방식을 광범위하게 사용하는 프로젝트를 시작하려고합니다. 즉, HATEOAS 를 사용하고 클라이언트가 일반적으로 탐색 할 수있는 방식으로 리소스를 제공합니다.

클라이언트 응용 프로그램을 다양한 언어로 자동 생성 할 수있는 방식으로 엔드 포인트에 대한 설명을 제공하고 싶습니다. SOAP 기반 웹 서비스의 경우 WSDL을 사용할 수 있으며 REST와 함께 사용중인 HTTP 동사에 대한 더 큰 정의를 제공하는 WSDL2가 있음을 이해합니다. 그러나 많은 기사가 유용하다는 점을 앞뒤로 돌리고 있습니다.

따라서 WADL 을 사용하여 외부 코드 생성기가 내 웹 응용 프로그램의 클라이언트를 신속하게 구축하거나 더 나은 표준이 필요합니까?


1
와우-이틀과 그냥 회전판을 통해 바람의 조용한 찌르는 소리 ...
게리 로우

절대적으로하지. WADL은 내가 지금까지 만난 최악의 API 문서입니다.
TheCodingArt

답변:


18

내 충고는 귀찮게하지 않습니다. WADL은 널리 채택되지 않았습니다 . Stack Overflow에서이 질문을 참조하십시오. 여기에 또 다른 Stack Overflow 질문에서 볼 수 있듯이 설명하는 '적절한'REST에 적합하지 않은 강력한 견해가 있습니다 .

WADL 설명은 빌드하는 데 많은 시간이 걸리며 (대부분 수동) HATEOAS가 피하도록 설계된 취성을 추가합니다. 즉, 잘 정의 된 진입 점이 있지만 미리 정의 된 것이 아니라 불투명 한 링크로 클라이언트가 어떻게 진행되는지 정확하게 결정합니다. '계약'.

RESTifarian 스펙트럼의 끝은 필요하지 않은 높은 수준의 자기 설명에 접근 할 수 있다고 말하지만 문서, 스키마 정의 등에서 완전히 벗어나야한다고 말하는 것은 아닙니다. 나는 이것이 실제로 사실임을 알지 못했다. 잘 작동하는 몇 가지 예는 모두 익숙하지 않은 개발자 요구 사항이어야합니다. 그리고 API를 시험해보기 위해 몇 개의 클라이언트를 중단하십시오 (JQuery에서 충분히 쉽게). 그것은 당신이 소모품을 만들고 있는지 아닌지를 알려주는 좋은 증거입니다.

이 영역에서 유용한 정보 소스는 하이퍼 텍스트 응용 프로그램 언어 입니다. 나는 그 중 일부는 약간 헤비급이지만, 메일 링리스트에 관한 논쟁은 좋고 현재와 관련이 있습니다.

시작하는 데 도움이되기를 바랍니다.


2
좋은 답변을 얻으려면 +1하십시오. 이것은 내가 가지고있는 의혹을 확인하고 현재 접근 방식을 다시 강화합니다 (자체 API를 사용하여 실제로 얼마나 쓰레기인지 확인하십시오).
Gary Rowe

5

대화식 브라우저 이외의 것으로 구동되는 REST 인터페이스의 상태는 그리 좋지 않습니다. HATEOAS는 좋은 원칙이지만, 매우 강인한 사람들을 지향하는 인터페이스로 연결되며 서비스 개발자에게 서비스를 제공하는 사용자 인터페이스의 부담을 초래하는 경향이 있습니다.

WADL 자체는 그리 크지 않습니다. 실제로 서비스의 의미를 충분히 포착하지 못하여 도구를 만들 수 있습니다. 물론 이것은 일반적으로 어려운 문제입니다. WSDL은 충분한 정보를 거의 공개하지 않으며 문제에 더 많은 노력을 기울였습니다 (충분한 정보를 첨부 할 수는 있지만 실제로는 거의하지 않습니다).

그러나 동료 직원이 서비스에 대한 REST 인터페이스를 사용하는 라이브러리에서 몇 달을 보냈으며 동일한 서비스에 대한 WSDL 설명 인터페이스 [*] 는 몇 초 안에 거의 동일한 품질로 자동 툴링되었습니다. 나머지 길을가는 것은 랩핑 수업을 쓰는 날이었습니다. 제한된 크기의 샘플을 기반으로 한 나의 직감은 복잡한 서비스에서 모든 취성을 제거 할 수 없다는 것입니다. 서비스의 의미는 시간이 지남에 따라 필연적으로 진화하고 REST는 인간을위한 인터페이스를 구동하는 데 더 좋고 SOAP은 더 좋습니다. 인터페이스 라이브러리 (거의 모든 언어에 적합한 WSDL / SOAP 클라이언트 툴링이 있음). 두 가지를 모두 수행 할 수있는 고급 스러움이 없다면 가장 집중해야 할 클라이언트에 따라 중점을 두어야합니다.

WADL에 많은 노력을 기울이지 않았지만 REST 프레임 워크가 당신을 위해 그것을 만들면 (Apache CXF가 이것을 수행) 그것을 제공하지 않을 특별한 이유는 없습니다. 코드를 제거하려는 사람은 누구나 WSDL + SOAP을 원할 것입니다.


[*] 문제의 서비스 작성자로서, 두 인터페이스가 동일한 작업을 지원했으며 (공통 기본 추상 모델이 있음) 두 인터페이스 유형 모두에 대해 "자연적인"스타일을 가지고 있다고 말할 수 있습니다. 서비스 측면에서는 REST를 사용하는 것이 쉽고 SOAP을 사용하는 것이 더 쉬운 경우가 분명했습니다.


+1. 우리 회사와 친척은 "SOAP가 필요한 사람, REST가 있습니다!"의 기간에 있습니다. SOAP 서비스를 중심으로 간단한 REST 래퍼를 만듭니다 . 모든 것이 단순하거나 명백한 것은 아닙니다. 때로는 어렵고 복잡합니다. 따라서 우리는 제 3 자에게 관심있는 필드를 정의하는 REST 인터페이스를 제공합니다. 이는 SOAP 서비스를 매우 복잡하지만 유연한 입력 및 출력 문서로 마무리합니다. WCF "이중 인터페이스"서비스를 사용합니다. 여기서 SOAP 및 REST 끝 점이 코드에서 생성됩니다 (XmlSpy로 작성된 Xsd 스키마에서 생성됨).
RoboJ1M

2

W3C는 A에 대한 공식적인 권고했다 REST 문서 표준 을 기반으로 WSDL 2.0 . 다음은 IBM 기사 에서 인용 한 것입니다 .

웹 서비스라는 용어는 일반적으로 SOAP 및 WS-Addressing 및 WS-Security와 같은 WS * 표준을 사용하는 작업 기반 또는 작업 기반 서비스와 관련이 있습니다. REST 웹 서비스라는 용어는 일반적으로 HTTP 및 XML을 사용하는 자원 기반 웹 서비스 아키텍처를 나타냅니다. 이러한 아키텍처 웹 서비스 스타일 각각은 그 자리에 있지만 최근까지 WSDL 표준은 두 스타일을 똑같이 지원하지 않았습니다. WSDL 1.1 HTTP 바인딩은 HTTP 및 XML과의 통신을 설명하기에 부적절하므로 WSDL을 사용하여 REST 웹 서비스를 공식적으로 설명 할 방법이 없었습니다. REST 웹 서비스를 염두에두고 설계된 WSDL 2.0의 발행은 W3C (World Wide Web Consortium) 권장 사항으로 REST 웹 서비스를 설명하는 언어가 있음을 의미합니다.


이 기사는 2008 년에 작성되었지만 WADL 자체는 2009 년에만 제출되었으므로 공정한 권장 사항과는 거리가 멀습니다. 이제 W3C WSDL 2.0 권장 사항 10 년 후 2017 년의 상태가 궁금합니다. 현재 WSDL의 최신 버전은 여전히 ​​동일한 2007 WSDL 2.0입니다. HTML 및 HTTP와 비교하여 단일 진행이 아닙니다. 그게 좋은지 궁금해?
Hendy Irawan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.