В чем причина использования WADL?

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

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


person Iguramu    schedule 21.08.2009    source источник
comment
Из Википедии: Язык описания веб-приложений (WADL) - это машиночитаемый XML описание веб-служб на основе HTTP.   -  person Ricardo    schedule 29.06.2018


Ответы (8)


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

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

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

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

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

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

person Henryk Konsek    schedule 24.05.2012
comment
--- ЭТО СПАСИТ ЗА ЖОПОМ была лучшая часть. Есть ли какой-нибудь генератор кода PHP из файла WADL? - person Jatin Dhoot; 20.05.2015
comment
Если вам не нужен wadl в веб-приложении. Что вам нужно сделать, чтобы отправить запрос на получение значений? - person Jesse; 25.01.2017
comment
Вы можете попросить другую команду предоставить вам, например, клиентский SDK. - person Henryk Konsek; 01.02.2017
comment
Как использовать и интегрировать веб- / REST API (WA) с недостаточной документацией? Вы оценили преимущества формального WADL (аналогично WSDL): Contract enforces bad communicators to communicate integration rules clearly. - person hc_dev; 13.12.2020

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

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

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

person Roboprog    schedule 21.08.2009
comment
Использование REST требует, чтобы вы определили данные / документы, которые вы передаете туда и обратно. Проблема с WADL заключается в том, что он также пытается определить конечные точки, которые не должны быть частью определения API. - person Darrel Miller; 24.08.2009
comment
Деррел, я не знаю ни одной веб-службы, для которой я когда-либо писал клиент, у которой не было бы ни одной конечной точки, с которой он использовался бы. - person Brill Pappin; 27.10.2011

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

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

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

person Darrel Miller    schedule 21.08.2009
comment
WADL также обращается к тем, у кого есть начальник, который говорит, что у вас должно быть формальное определение в стандартном формате. Я не говорю, что это лучший способ сделать это, просто иногда полезно, так сказать, поставить галочку в организационной графе. Тот факт, что это излишество, может быть потерян для босса. Тем не менее, наличие официального файла def может спасти вас от того, что вас снова загонят в трубу для взлома SOAP, которую засасывают все остальные крутые корпоративные дети. - person Roboprog; 26.08.2009
comment
@Roboprog Документируйте ваши типы носителей, а не конечные точки. В реестре IANA есть множество хороших примеров. Также хорошим примером является Sun Cloud API. Вы должны убедить своего босса, что документирование конечных точек - плохая идея на будущее. - person Darrel Miller; 26.08.2009
comment
Это также удобно для разработчиков, которым на самом деле нужно больше, чем писать клиентский код в течение всего дня. - person Brill Pappin; 27.10.2011
comment
@DarrelMiller спасибо за содержательный и доступный ответ. Не могли бы вы развить свою точку зрения о подходящих типах носителей для REST? Что предпочтительнее XML или JSON? - person cboettig; 22.05.2013
comment
@cboettig Это большой вопрос, но вы можете начать с изучения таких типов мультимедиа, как application / vnd.hal + json, application / collection + json, RDF, XHTML и ALPS. - person Darrel Miller; 22.05.2013
comment
@DarrelMiller ахах, я вижу, значит, XML ограничен заданной схемой? Тогда мне нужно будет узнать немного больше о том, как указать схему через тип мультимедиа, но это начинает иметь большой смысл; Благодарность! - person cboettig; 22.05.2013
comment
@DarrelMiller также я понятия не имел, что у JSON тоже есть схемы ... вау. - person cboettig; 22.05.2013
comment
Схема @cboettig - это просто набор синтаксических правил, они не добавляют семантики. Вам понадобится какой-то другой механизм, например тип мультимедиа или профиль, чтобы добавить семантику. - person Darrel Miller; 23.05.2013
comment
@DarrelMiller Хм, возможно, у схемы разные значения; Я думал, что схема XML действительно определяет пространство имен (например, семантику), так что ваши примеры RDF или XHTML можно рассматривать как разные схемы XML, но вместо этого вы называете их разными типами мультимедиа XML? - person cboettig; 23.05.2013
comment
@cboettig Люди действительно связывают семантику с элементами и атрибутами пространства имен, но для этого не существует стандартизированного процесса. Типы носителей имеют официальный реестр, указывающий на спецификации, определяющие семантику. iana.org/assignments/media-types/application - person Darrel Miller; 23.05.2013
comment
Если кого-то смущает этот ответ, обратитесь к этой странице (документация Sun Cloud API). Для меня это стало более разумным, когда я смог увидеть пример того, что он защищает. kenai.com/projects/suncloudapis/pages/ - person siliconrockstar; 07.12.2016

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

person Constantine    schedule 28.01.2010

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

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

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

person Brill Pappin    schedule 26.10.2011
comment
Конечно, это хороший ответ. Сопротивление, похоже, исходит от хардкорных SOAP-людей, которые вообще не хотят REST, и некоторых хардкорных REST-ковбоев, которые не хотят дополнительной работы. Наличие формальной документации - хороший фиговый листок на предприятии, даже если это пустая трата времени для крошечного API в стартапе. - person Roboprog; 28.10.2011
comment
По моему опыту, есть три основные причины для чего-то вроде WADL: - многие хорошие разработчики не знают REST. - Когда вы работаете, наличие документа или API значительно ускоряет работу. - Вы никогда не можете предполагать, что кто-то другой реализовал вызов REST так же, как вы. Даже евангелисты REST не могут согласиться :) Я даже встречал случаи, когда среда не позволяла выполнять вызовы DELETE или PUT, поэтому вы получаете интерфейс, подобный REST, который использует только вызовы GET и PUT ... и тогда документация становится решающей. - person Brill Pappin; 31.10.2011
comment
Я уверен, что вы имели в виду GET и POST, как в подделке PUT и DELETE с фанковыми параметрами POST. Увы... - person Roboprog; 02.11.2011

REST ничего не говорит о WADL.

person aehlke    schedule 21.08.2009
comment
Я так думаю, но Wadl может использовать внутри остальных, например, youtube.com/watch?v= cDdfVMro99s. Похоже, что wadl поддерживает клиентов для использования функций сервера. А клиентам могут просто потребоваться параметры и имя функции. - person Iguramu; 21.08.2009
comment
То, что вы мне только что описали, звучит как RPC, а не REST. - person aehlke; 22.08.2009

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

person rajendra.penumalli    schedule 05.11.2016

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

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

person R.Ranjan    schedule 02.09.2018