Каковы основные различия между REST и SOAP?

«Каковы основные различия между REST и SOAP?» — вопрос из категории API тестирование, который задают на 31% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

REST (Representational State Transfer) — это архитектурный стиль, а SOAP (Simple Object Access Protocol) — строгий протокол.

Критерий REST SOAP
Основа Архитектурный стиль, набор принципов. Формальный протокол со строгой спецификацией (WSDL).
Транспорт Использует HTTP (и его методы: GET, POST и т.д.). Может работать поверх HTTP, SMTP, TCP и др.
Формат данных JSON, XML, текст — что угодно (чаще JSON). Только XML.
Стандарты Гибкость, меньше стандартов. Строгие стандарты для безопасности (WS-Security), транзакций и др.
Производительность Легковесный, быстрее из-за компактности JSON. Более тяжелый из-за XML-обёрток.
Кэширование Поддерживает кэширование HTTP. Не поддерживает на уровне протокола.

Пример REST-запроса (JSON):

GET /api/users/1 HTTP/1.1
Host: example.com
Accept: application/json

Пример SOAP-запроса (XML):

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <m:GetUserRequest xmlns:m="http://example.com/ws">
      <m:UserId>1</m:UserId>
    </m:GetUserRequest>
  </soap:Body>
</soap:Envelope>

Вывод: REST проще и популярен для публичных веб-API, SOAP используется в корпоративных системах, где критичны стандартизация и безопасность.