Использование службы REST, которая не предлагает WADL

Мне нужно работать с сервисом REST, который имеет относительно простую и фиксированную (имеется в виду предсказуемо не очень вариантная структура), но я нигде не могу найти WADL на их сайте. Ранее я работал со службами SOAP, у которых был приличный WSDL, и я использовал его для создания своих классов Java, в которые мое клиентское приложение упорядочивало данные службы с помощью Axiom2.

Мой вопрос: есть ли простой способ реконструировать WADL, с помощью которого можно легко генерировать соответствующие классы Java, если на сайте их нет, используя некоторую реализацию JAX-RS (например, Джерси)? Другой способ задать этот вопрос: имея только службу REST, без WADL и некоторую форму JAX-RS, какой самый простой способ создать упорядоченные классы на стороне клиента?

В настоящее время, поскольку структура проста, я делаю это сложным способом, используя прямой DOM из Java SE (org.w3c.dom) для анализа документа. Он работает нормально, но мне не нравятся все перемещения, которые я должен выполнять в структуре документа, и я чувствую, что заново изобрел колесо. Я уверен, что есть более элегантный способ.


person amphibient    schedule 15.03.2013    source источник


Ответы (2)


Если вы делаете это только один раз, почему бы просто не сделать это вручную? Если вам нужно делать это регулярно, возможно, вам не повезло с WADL (см. также: https://softwareengineering.stackexchange.com/questions/133145/should-i-use-wadl-to-describe-my-restful-api).

Вы просто пытаетесь создать классы Java для DTO из службы? В этом случае вы можете взять образец XML из службы и использовать его для создания возможного XSD (возможно, используя транг). Затем используйте XJC для создания соответствующих классов Java.

person condit    schedule 16.03.2013

Если служба REST реализована в Джерси, Джерси должен автоматически генерировать WADL во время выполнения. Расположение по умолчанию — http://server:port/appcontextroot/application.wadl. Если служба REST использует другую реализацию, такую ​​как RESTEasy, вам не повезло. https://issues.jboss.org/browse/RESTEASY-166

person Lan    schedule 16.03.2013
comment
на самом деле, я думал об использовании Джерси для потребления, а не для реализации сервиса. на стороне клиента - person amphibient; 16.03.2013