В чем причина использования WADL? - PullRequest
77 голосов
/ 21 августа 2009

Чтобы описать RESTful, мы можем сказать, что у каждого ресурса есть свой собственный URI. Используя HTTP GET, POST, PUT и DELETE, мы можем работать с этими ресурсами. Все ресурсы представительные. Тот, кто хочет использовать наши ресурсы, может сделать это через браузер или REST-клиент.

Это основная идея архитектуры RESTful. Эта архитектура позволяет услуги в Интернете. Так зачем этой архитектуре нужен WADL? Что предлагает WADL, чего нет в стандартном HTTP? Почему WADL должен существовать?

Ответы [ 8 ]

145 голосов
/ 24 мая 2012

Целью WADL является определение контракта . В контракте указывается, как одна сторона может позвонить другой.

Когда вы создаете веб-приложение с нуля, вам не нужен контракт и WADL .

Когда вы интегрируете свою систему с другой системой и можете четко общаться с их командой разработчиков, вам не нужен контракт и WADL (потому что вы можете сделать телефонный звонок, чтобы прояснить ситуацию).

Однако, когда вы интегрируете сложную корпоративную систему с несколькими другими сложными корпоративными системами, поддерживаемыми несколькими различными компаниями (или федеральными учреждениями), то поверьте мне , вы хотите, чтобы имел контракт на связь, определенный как можно более строго. Тогда вам нужен WADL или Open Specification. Нужно это сильно .

Люди со слабым корпоративным опытом склонны рассматривать всю ИТ как совокупность отдельных веб-приложений, разрабатываемых независимо. Но корпоративная реальность иногда жесткая. Иногда вы даже не можете позвонить или написать людям, разрабатывающим приложение, с которым вам нужно интегрироваться. Иногда вы общаетесь с унаследованным приложением, которое больше не поддерживается - оно просто запускается, и вам необходимо выяснить, как правильно с ним общаться. В таких условиях вам нужен контракт, потому что он спасает вашу задницу .

На самом деле создание клиента является второстепенной особенностью определения контракта. Это просто игрушка. Контракт заставляет плохих коммуникаторов четко сообщать правила интеграции. Это основная причина для использования WADL или Open Specification или чего-то еще.

36 голосов
/ 22 августа 2009

Использование WADL подразумевает, что вы можете быть достаточно любезны, чтобы фактически определить данные / документы, которые вы передаете взад и вперед. Скажем, вы передаете некоторые фрагменты XML, они могут фактически быть частью определенной схемы.

Для меня не очень важно, используете ли вы DL для генерации кода. По моему субъективному мнению, важно то, что важно иметь официальное соглашение о взаимодействии между деловыми партнерами. Даже если то, что передано , является очевидным, это помогает определить, кто должен что-то исправить, если кто-то изменит предыдущий интерфейс.

Формат данных является такой же частью интерфейса, как и имена глаголов.

28 голосов
/ 22 августа 2009

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

Я полагаю, что если вы правильно определяете типы мультимедиа и используете гипермедиа в этих типах мультимедиа, то необязательно иметь WADL. Описание доступных конечных точек содержится в самих определениях типа носителя. И если вы сейчас говорите себе, но application / xml не содержит никакой информации о доступных гиперссылках, то я говорю BINGO. Вот почему я не думаю, что application / xml и application / json являются подходящими медиа-типами для REST. Я не говорю, что не используйте XML или JSON, просто не используйте универсальное имя типа носителя.

Другое обращение WADL предназначено для документирования услуг REST. К сожалению, это ведет разработчиков по неверному пути, поскольку WADL пытается документировать конечные точки на стороне сервера. Документирование REST-сервисов должно быть сосредоточено, прежде всего, на медиа-типах. Разработчик клиента должен иметь возможность написать клиент REST, не зная ни одного URL-адреса, кроме корневого.

16 голосов
/ 27 октября 2011

Прежде чем дать свое объяснение, позвольте мне сказать, что самые чистые экстремисты REST высмеивают его до самых краев земли. Я не согласен с ними, так как я бы предпочел что-то сделать, но просто, чтобы вы знали.

WADL - это описание API веб-сервиса, немного похожее на WSDL для веб-сервисов типа SOAP, которое разработано так, чтобы больше соответствовать интерфейсам RESTful (что плохо в WSDL).

По моему опыту, это основное использование, которое позволяет вам генерировать клиентский код, который может вызывать службу (удобно, если это очень большой API, который буквально экономит часы работы). Он также служит для документирования REST-подобного интерфейса.

16 голосов
/ 28 января 2010

WADL позволяет генерировать код, тесты и документацию. На самом деле есть несколько очень полезных инструментов, использующих WADL, вы можете увидеть некоторые примеры здесь . Проблема с «чистым» REST, как описано в диссертации Филдинга, заключается в написании клиентов, поддерживающих Hypermedia (представьте, например, написание клиентского приложения на основе Java Swing). С WADL эта задача полностью автоматизирована, и, на мой взгляд, это огромное преимущество. Тестирование становится намного проще.

6 голосов
/ 21 августа 2009
3 голосов
/ 05 ноября 2016

Когда вы хотите предоставить сервисы REST, лучший способ - это сгенерировать WADL и поделиться с потребителем (аналогично WSDL в веб-сервисах на основе SOAP). WADL используется для описания сервиса на месте.

0 голосов
/ 02 сентября 2018

WADL не нужно использовать. Но если вы работаете со сложным существующим приложением и хотите реализовать вызов службы REST, заменив вызов службы EJB / SOAP, тогда использование WADL является очень безопасным и хорошим способом. Используя WADL для создания клиентских заглушек на стороне клиента, вы будете синхронизированы со службой.

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

...