REST веб-сервис WSDL?

Я внедряю веб-сервис, и я реализовал как REST, так и SOAP-версию, чтобы увидеть, что соответствует моим потребностям. Я решил выбрать REST из-за его простоты и того, что я, вероятно, буду разрабатывать приложение для iPhone для его использования. Мой вопрос прост на самом деле, возможно ли создать WSDL или WADL для моей службы REST и нужно ли это?

Спасибо

7 ответов

Решение

С хорошим сервисом RESTful нет необходимости генерировать WADL (не говоря уже о гораздо менее подходящем WSDL) для него, потому что он будет самоописываться. Под "самоописанием" я конкретно подразумеваю, что он будет доставлять документы, описывающие все (соответствующие) ресурсы, публикуемые службой, и что использование стандартного запроса HTTP OPTIONS для любого из них даст основную информацию о том, как взаимодействовать. Единственное реальное преимущество использования WADL заключается в том, что он позволяет вызывающему абоненту заранее находить схемы для сложных документов, с которыми он должен работать; REST сам по себе там не помогает (и некоторые RESTians считают, что делать такие вещи контрпродуктивно, с чем я не уверен, что согласен).

Конечно, это не отражает более глубоких шаблонов взаимодействия, но и подавляющего большинства описаний служб WSDL, поэтому никаких изменений там нет.


Для записи я использую Apache CXF для создания сервисов RESTful (используя JAX-RS), и он публикует WADL для них.

W3C сделал официальную рекомендацию для стандарта документации REST, основанного на WSDL 2.0. Вот цитата из статьи IBM:

Термин веб-сервисы обычно ассоциируется с сервисами на основе операций или действий, использующими стандарты SOAP и WS*, такие как WS-Addressing и WS-Security. Термин "веб-службы REST" обычно относится к архитектуре веб-служб на основе ресурсов, в которой используются HTTP и XML. Каждый из этих архитектурных стилей Web-сервисов имеет свое место, но до недавнего времени стандарт WSDL не в равной степени поддерживал оба стиля. HTTP-привязка WSDL 1.1 была недостаточной для описания взаимодействия с HTTP и XML, поэтому не было возможности официально описать веб-службы REST с WSDL. Публикация WSDL 2.0, которая была разработана с учетом Web-сервисов REST, как рекомендация Консорциума World Wide Web (W3C), означает, что теперь существует язык для описания Web-сервисов REST.

RestDoc пытается создать простую структуру документации для ресурсов REST. Браузер доступен через restdoc-рендерер.

Он также предлагает аннотации Java, позволяющие оперативно создавать документацию RestDoc. Доступны реализации для Jersey 1.x и JAX-RS 2.0.

Конечно, это возможно, но для ответа, если это необходимо или нет, вы не предоставили достаточно информации.

Я предлагаю вам взглянуть на сайт разработчиков IBM, который предоставляет интересную статью на эту тему: http://www.ibm.com/developerworks/webservices/library/ws-restwsdl/
Надеюсь, поможет.


Строго говоря, с WSDL 1.0 вы не можете, но с WSDL2 вы можете, потому что он был разработан для того, чтобы принять такой спрос,

"... WSDL 2.0 в профиле WS-I, отвечающем требованиям веб-сервисов в стиле REST. Добавление GET в SOAP 1.2 и несколько дополнений в WSDL 2.0, таких как безопасность операций, возможность описания сообщений, относящихся к другим сетям сервисы и улучшенное связывание HTTP теперь позволяют описывать веб-сервисы в стиле REST.", Артур Райман.

Как сказал @GiuliaDiFederico, "конечно, это возможно" (с WSDL2), показывая хорошую ссылку на источник о том, как это сделать. @DonalFellows, с другой стороны, не поощряет использование WSDL...

Я думаю, что использование WSDL является вопросом

  • УРОВЕНЬ ФОРМАЛИЗАЦИИ: с WSDL вы можете более формально выразить все соответствующие детали вашего веб-сервиса.
  • УРОВЕНЬ СТАБИЛЬНОСТИ: если вам нужны долгосрочные контракты и вы избегаете рисков изменений в среде, где выставляется ваш веб-сервис, WSDL помогает поддерживать стабильность.
  • НЕОБХОДИМОСТЬ СТАНДАРТОВ: если клиенты предпочитают веб-сервисы, которые можно назвать "совместимыми со стандартами", используйте стандарты. Единственным является W3C, а W3C требует XML, SOAP и WSDL.

WADL не нужен. Но, если код на стороне клиента уже присутствует в приложении, и вы хотите сделать новый вызов rest, то хорошей практикой является использование wadl для создания клиентской заглушки на стороне клиента (POJO). Таким образом, POJO на стороне клиента будут синхронизированы с POJO на стороне обслуживания. Например, если вы заменяете сервисный вызов EJB/SOAP на сервисный вызов Rest в существующем приложении, тогда использование WADL очень безопасно и полезно.

Вы можете сгенерировать клиентские заглушки Java из WADL с помощью плагина wadl2java maven.

Я думаю, что WSDL не подходит для REST, а WADL не нужен. HTTP уже раскрывает то, что WADL может описать в отдельном файле. Например, заголовок "Allow" возвращает разрешенный метод HTTP, а Content Negotiation - для выбора правильного формата.

Другие вопросы по тегам