Почему не работает веб-служба на основе SOAP RESTful?

Я понимаю, что RESTful - это стиль архитектуры, но что именно делает веб-сервис на основе SOAP не рассчитан на RESTful?

Мне не ясно, какие точки ниже (из Wikipedia) не соответствуют SOAP.

  • Клиент-сервер
  • Stateless
  • Cacheable
  • Многоуровневая система
  • Код по требованию (необязательно)
  • Равномерный интерфейс
    • Идентификация ресурсов
    • Манипулирование ресурсами через эти представления
    • Самоописательные сообщения
    • Hypermedia как двигатель состояния приложения.

EDIT: я просто натолкнулся на этот, который достаточно хорошо описывает его.

REST не RPC, говорит RPC, "define некоторые методы, которые делают что-то" тогда как REST говорит: "Определите некоторые ресурсов, и они будут иметь эти методы". Это тонкая, но жизненно важная разница, при предоставлении URI кто-нибудь знает, что они могут взаимодействовать с ним через предопределенные набор методов и получение стандарта HTTP-ответы в ответ. Так что дано http://www.peej.co.uk/ Я знаю, что могу выпустить GET на него и получить что-то значимое. Тогда я могу попробуйте PUT на нем, чтобы изменить его и получить достоверный код ошибки HTTP так как я не уполномочен вмешиваться с ним.

Ответ 1

SOAP следует шаблону RPC. SOAP API описывает ряд методов, а также их параметры и возвращаемые значения, которые вы можете вызывать из своего кода. Там маршалинг шаг, который преобразует это в это сетевое представление.

REST никогда не RPC. API REST описывает ряд ресурсов, а также набор глаголов (обычно HTTP GET, POST, PUT, DELETE), которые могут действовать на них.

Чтобы ответить на ваш вопрос напрямую: SOAP в первую очередь нарушает пункт 6 (он не предоставляет единый набор глаголов через API). Это также нарушает пункт 2 (сервер может поддерживать состояние для каждого клиента), а также как результат 3 (состояние предотвращает кеширование).

Ответ 2

REST и SOAP не являются эквивалентными понятиями.

REST:

  • Зависит от одного транспортного протокола (HTTP).
  • Полностью использует специфические особенности этого протокола (глаголы GET, POST, PUT, DELETE, кеширование, заголовки и предопределенные коды ошибок).
  • Ничего не говорит о формате сообщений, передаваемых взад и вперед. Однако, поскольку HTTP-глагол и URL уже определяют действие, которое необходимо предпринять, тело сообщения должно содержать только данные.
  • Безопасность сообщений обеспечивается транспортным протоколом (HTTPS) и только точка-точка. Если вы хотите защитить сообщение от конца до конца, вы должны сделать это сами.
  • Первоначально предназначался для простых операций CRUD для объектов.

SOAP:

  • Независимо от транспортного протокола (могут быть HTTP, FTP, TCP, UDP, именованные каналы, общая память или даже электронная почта).
  • Требуется только, чтобы транспортный протокол мог отправлять и получать текст (например, на HTTP, используется только глагол POST).
  • Строго определяет формат сообщений, передаваемых взад и вперед. Сообщение SOAP содержит данные, действие для выполнения на нем, заголовки и данные об ошибках в случае сбоя.
  • Безопасность сообщений обеспечивается стандартами WS- * и является сквозной.
  • Первоначально предназначался для произвольных вызовов RPC.

Пункты 2 и 3 в приведенных выше списках являются основными моментами несовместимости.

Ответ 3

Одна из целей REST - это кэшируемость, для чего ресурс должен быть идентифицирован с помощью uri (строка запроса). В мыле запрос отправляется, поэтому для разных запросов у вас одинаковый uri, и поэтому ресурс не может быть однозначно идентифицирован ur

Ответ 4

REST соответствует не более чем протоколу http.

Ответ 5

Restful: REST - это архитектурный стиль для создания веб-сервиса с использованием протокола HTTP, где веб-службы рассматриваются как ресурсы, и используются некоторые базовые методы HTTP, такие как GET, POST, DELETE для определения стандартных действий по ресурсам. RESTful web API (также называемый веб-службой RESTful) - это веб-интерфейс, реализованный с использованием HTTP и принципов REST.

Мыло: SOAP, первоначально определяемый как Simple Object Access Protocol, является спецификацией протокола для обмена структурированной информацией в форме XML.

Ответ 6

Протокол SOAP: SOAP - это протокол, который означает, что он имеет определенную структуру.

  • POST: для запроса SOAP всегда требуется тело HTTP, поэтому метод HTTP - POST. Подробнее о HTTP-методах в будущем POST (они очень актуальны в REST), но на данный момент допустим, что это всегда POST в случае SOAP
  • Действие SOAP: пустые означает, намерение в URI запроса HTTP.
  • Content-Type: SOAP использует XML как язык для связи, и, следовательно, это всегда text/xml
  • с пространством имен XML (xmlns) необходимо указать, что это SOAP-запрос.
  • - это корневой элемент SOAP, который описывает запрос и ответ.

RESTful API Design включает в себя нарушение системы с точки зрения ресурсов и обеспечение доступа к этим ресурсам через конечные точки (также называемые операциями), определенные на основе uris веб-сервиса. Доступ осуществляется с использованием стандартных методов HTTP и контролируется механизмом auth. Конфигурация для ресурса предоставляется и получается посредством запроса и ответа с кодами состояния HTTP, сообщающими состояние. 1. Ресурсы - это объекты, которые существуют в системе, созданной RESTful. Например, в случае веб-сайта для ведения блога это могут быть блоги, сообщения и комментарии. 2. Конечные точки или операции предоставляют механизм, с помощью которого эти ресурсы могут быть доступны. Например, конечная точка для перечисления всех сообщений в блоге в конкретном блоге будет GET on/blogs/{blogId}/posts. 3. Базовые URI определяют местоположение веб-uri, где ресурсы доступны через конечные точки. Чтобы взять реальный пример, для Google blogger base_uri https://www.googleapis.com/blogger/v3. 4. Методы HTTP - это то, где лежит простота REST. В дизайне API RESTful операции с ресурсами выполняются с помощью стандартных HTTP-методов, прежде всего GET, POST, PUT и DELETE. В некоторых случаях также используются другие методы HTTP - OPTIONS, HEAD, PATCH.

Ответ 7

SOAP vs REST Web Services

1) SOAP - это протокол, тогда как REST - это архитектурный стиль.

2) SOAP не может использовать REST, потому что это протокол, тогда как REST может использовать веб-службы SOAP, потому что это концепция и может использовать любой протокол, такой как HTTP, SOAP.

3) SOAP использует интерфейсы служб для раскрытия бизнес-логики, тогда как REST использует URI для раскрытия бизнес-логики.

4) SOAP определяет стандарты, строго соблюдаемые, тогда как REST не определяет слишком много стандартов, таких как SOAP.

5) SOAP требует большей пропускной способности и ресурса, чем REST, тогда как REST требует меньшей пропускной способности и ресурса, чем SOAP.

6) SOAP определяет свою собственную безопасность, в то время как веб-службы RESTful наследуют меры безопасности из основного транспорта.

7) SOAP разрешает только формат данных XML, тогда как REST разрешает использовать другой формат данных, такой как обычный текст, HTML, XML, JSON и т.д.

Веб-службы RESTful в значительной степени предпочитают веб-службы SOAP.