Почему веб-сервис на основе SOAP не является RESTful? - PullRequest
45 голосов
/ 23 декабря 2009

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

Мне не ясно, какие пункты ниже (из Википедии ) не соответствуют SOAP.

  1. клиент-сервер
  2. Stateless
  3. Cacheable
  4. Многоуровневая система
  5. Код по запросу (необязательно)
  6. Единый интерфейс
    • Идентификация ресурсов
    • Манипулирование ресурсами через эти представления
    • информативные сообщения
    • Гипермедиа как двигатель состояния приложения

РЕДАКТИРОВАТЬ : Я только что натолкнулся на этот , который довольно хорошо суммирует его.

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

Ответы [ 7 ]

55 голосов
/ 23 декабря 2009

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

ОСТАЛЬНЫЕ:

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

SOAP:

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

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

46 голосов
/ 23 декабря 2009

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

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

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

5 голосов
/ 23 декабря 2009

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

4 голосов
/ 23 декабря 2009

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

2 голосов
/ 07 декабря 2015

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

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

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

2 голосов
/ 05 сентября 2014

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

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

1 голос
/ 04 мая 2015

SOAP и веб-службы REST

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...