SOAP vs REST
SOAP — более старый, строгий протокол обмена сообщениями, всегда в формате XML с фиксированной структурой конверта. REST — более гибкий стиль, обычно использует JSON и обычные HTTP-методы.
<!-- SOAP-запрос — всегда XML "конверт" -->
<soap:Envelope>
<soap:Body>
<GetUserRequest>
<UserId>5</UserId>
</GetUserRequest>
</soap:Body>
</soap:Envelope>
// REST-запрос — обычно JSON, проще
GET /api/users/5
Копнуть глубже
Сравнение по практическим параметрам:
| SOAP | REST | |
|---|---|---|
| Формат | только XML | обычно JSON, может быть и XML |
| Контракт | строгий, описан в WSDL-файле | менее формальный, документация (OpenAPI/Swagger) |
| Транспорт | обычно HTTP, но не обязательно | строго HTTP |
| Встроенная безопасность | WS-Security (расширенный стандарт) | через HTTPS + токены |
| Размер сообщений | больше (XML многословнее) | компактнее |
| Где встречается сегодня | банковские, государственные интеграции (легаси) | подавляющее большинство современных API |
WSDL (Web Services Description Language) — формальный XML-документ, описывающий все доступные операции SOAP-сервиса, типы данных, структуру запросов/ответов — клиент может автоматически сгенерировать код для работы с сервисом прямо из WSDL.
Почему REST вытеснил SOAP в большинстве новых проектов. REST проще читать и отлаживать (обычный JSON вместо громоздкого XML-конверта), легче для мобильных клиентов (меньше трафика), не требует специальных библиотек для работы — обычный HTTP-клиент справляется. SOAP остаётся там, где критична строгая типизация контракта и встроенные стандарты безопасности/транзакций (часто в финансовых и государственных системах, интегрирующихся с legacy-инфраструктурой).
• что такое WSDL и почему REST вытеснил SOAP в большинстве новых проектов (если дошёл до 2-го слоя).