RESTful-сервисов - язык WSDL эквивалент
Я читал о REST и SOAP и понимаю, почему реализация REST может быть полезна по сравнению с использованием протокола SOAP. Однако я все еще не понимаю, почему в остальном мире нет эквивалента "WSDL". Я видел сообщения о том, что" нет необходимости " для WSDL или что это было бы излишним в остальном мире, но я не понимаю, почему. Разве не всегда полезно программно привязываться к определению и создавать прокси-классы вместо ручного кодирования? Я не хочу вступайте в философские дебаты, просто ищите причину, по которой нет WSDL в REST, или почему это не нужно. Спасибо.
8 ответов
на Язык Описания Веб-Приложений (WADL) в основном эквивалентен WSDL для служб RESTful, но существует постоянный спор о том, нужно ли вообще что-то подобное.
Джо Грегорио написал хорошая статья на эту тему что стоит прочитать.
WSDL описывает конечные точки службы. Клиенты REST не должны быть связаны с конечными точками сервера (т. е. не должны быть заранее известны в URL-адресах). Клиенты REST соединяются на типах носителей, которые передаются между клиентом и сервером.
возможно, имеет смысл автоматически создавать классы на клиенте для обертывания возвращаемых типов носителей. Однако как только вы начинаете создавать прокси-классы вокруг взаимодействий служб, вы начинаете скрывать взаимодействия HTTP и риск вырождения обратно к модели RPC.
RSDL стремится превратить rest как гипермедиа, другими словами, он имеет больше информации, чем сервисный дескриптор, такой как WSDL или WADL. Например, он содержит информацию о навигации, например гипертекст и гиперссылки.
например, учитывая текущий ресурс, у вас есть набор ссылок ОС на другие ресурсы, связанные.
однако я не нашел клиентов Rest, которые поддерживают этот формат или решения Rest Server с функцией автоматического его создания.
I думаю, есть долгий путь для вывода об этом. См. длинную историю HTML и W3C против браузеров lol.
для получения более подробной информации об отдыхе, как гипермедиа посмотреть его:http://en.wikipedia.org/wiki/HATEOAS
Примечание: Рой Филдинг критиковал эти тенденции в REST Apis без подхода к гипермидии:http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
мой вывод: Теперь дни, WADL больше распространено, что REST и интеграционные фреймворки, такие как Camel CXF, уже поддерживают WADL ( generate and consume), потому что он похож на WSDL, поэтому наиболее легко понять в этом процессе миграции ( SOAP to REST ).
давайте посмотрим следующие главы;)
существует RSDL (язык описания службы restful), который эквивалентен WSDL. URL ниже описывает свою практику http://en.wikipedia.org/wiki/HATEOAS и http://en.wikipedia.org/wiki/RSDL. Проблема в том, что у нас есть много инструментов для генерации кода из wsdl в java или наоборот. Но я не нашел никакого инструмента для генерации кода из RSDL.
разве не всегда полезно программно привязываться к определению и создавать прокси-классы вместо ручного кодирования?
полностью согласен, именно поэтому я использую чванство.Ио
Swagger-это мощная платформа с открытым исходным кодом, поддерживаемая большим экосистема инструментов, которые помогают разрабатывать, создавать, документировать и использовать ваш спокойный Апис.
поэтому в основном я использую Swagger для описания мои модели, конечные точки и т. д., а затем я использую другие инструменты, такие как чванство-что codegen для генерации прокси-классов вместо ручного кодирования.
Читайте также: РАМЛ
однако REST использует сетевой протокол с помощью команд HTTP и URI для представления состояния объектов.
WSDLs скажет вам в этом месте, если вы отправите это сообщение, вы выполните это действие и получите этот формат обратно в результате.
в REST, если бы я хотел создать новый профиль я бы использовал глагол POST
с телом JSON или переменными HTTP-сервера, описывающими мой профиль в URL /profile
POST
должен возвращать идентификатор, сгенерированный на стороне сервера, используя код состояния 201 CREATED
и заголовок Location: *new_profile_id*
(например 12345)
затем я могу выполнять обновления, изменяя состояние /profile/12345
использование команды HTTP POST
, скажем, изменить адрес электронной почты или номер телефона. Очевидно, изменение состояния пульта объект.
GET
вернет текущее состояние /profile/12345
PUT
обычно используется для генерируемого ID на стороне клиента
DELETE
очевидно
HEAD
, получает статус, не возвращая тело.
С REST он должен быть самодокументирован через хорошо разработанный API и, следовательно, проще в использовании.
это отличная статья на отдых. Мне это тоже помогает понять.
спецификация wsdl 2.0 также добавила поддержку веб-служб REST. Лучший сценарий обоих миров. Проблема в том, что WSDL 2.0 пока не поддерживается большинством инструментов. WSDL 2.0 рекомендуется W3C, WSDL1.1 Не рекомендуется W3C, но широко поддерживается инструментами и разработчиками. Ссылка: http://www.ibm.com/developerworks/library/ws-restwsdl/
язык описания веб-приложений (WADL) - это словарь XML, используемый для описания веб-служб RESTful.
как и в WSDL, универсальный клиент может загрузить файл WADL и сразу же получить доступ к полной функциональности соответствующей веб-службы.
поскольку службы RESTful имеют более простые интерфейсы, WADL не так необходим для этих служб, как WSDL для служб SOAP в стиле RPC.