В чём разница между SOAP и REST?

👨‍💻 Frontend Developer 🟠 Может встретиться 🎚️ Средний
#API #HTTP #Architecture

Краткий ответ

  • SOAP — протокол с формальными контрактами (WSDL), XML‑сообщениями и WS‑* расширениями.
  • REST — архитектурный стиль: ресурсы, HTTP‑методы, статлес, кеширование, простые коды ответов.
  • SOAP удобен для строгой интеграции и транзакций; REST — для веб‑API, скорости разработки и масштабирования.
  • Форматы: SOAP обычно XML; REST чаще JSON, но поддерживает любые форматы.
  • Транспорт: SOAP поддерживает разные транспорты (HTTP, SMTP и т. д.); REST опирается на HTTP‑семантику.

Полный ответ

Модель взаимодействия

  • SOAP — операционно‑ориентированный: вызываете методы (операции) с чёткими контрактами.
  • REST — ресурсно‑ориентированный: работаете с ресурсами через HTTP (GET/POST/PUT/DELETE).

Контракты и типизация

  • SOAP использует WSDL/XSD — строгие, формальные контракты.
  • REST часто описывается OpenAPI/Swagger — менее формально, но достаточно для клиентов и генерации.

Форматы и расширения

  • SOAP: XML‑конверты, WS‑Security, WS‑ReliableMessaging, транзакции.
  • REST: гибкие форматы (JSON, XML, HAL), HTTP‑кеширование, ETag, контент‑негациация.

Ошибки и статусы

  • SOAP: Fault в ответе, коды и детали внутри XML.
  • REST: стандартные коды HTTP (200, 201, 400, 404, 500) плюс тело ошибки.

Когда выбирать

  • Выберите SOAP: строгая соответствие стандартам, транзакционность, корпоративные шины, наследие.
  • Выберите REST: публичные API, микросервисы, веб‑интерфейсы, быстрота разработки.

Мини‑примеры

REST:

GET /users/1
Accept: application/json
{"id":1}

SOAP:

<soap:Envelope>
  <soap:Body>
    <GetUser id="1"/>
  </soap:Body>
</soap:Envelope>