Почему не работает веб-служба на основе 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.