🐴 Дело о REST и SOAP
Небольшой, но показательный нюанс про REST и SOAP, который часто упускают. REST жёстко привязан к транспорту: работает только через HTTP/HTTPS. Зато формат данных гибкий — может быть JSON, XML или что-то ещё, в зависимости от того, как договорились клиент и сервер.
REST → HTTP/HTTPS → TCP → IP
SOAP устроен ровно наоборот. Формат сообщений у него жёстко зафиксирован — только XML, никаких вариантов. А вот с транспортом всё гибче: SOAP не привязан к HTTP.
Самый распространённый вариант — через HTTP/HTTPS, именно поэтому SOAP и REST кажутся похожими по архитектуре:
SOAP → HTTP/HTTPS → TCP → IP
Но это лишь один из возможных сценариев. SOAP описывает формат сообщений и правила их обработки — а транспорт находится на отдельном уровне и жёстко к HTTP не привязан. Спецификация SOAP 1.2 прямо допускает передачу сообщений через разные протоколы, в том числе напрямую через TCP, без HTTP как прослойки:
SOAP → TCP → IP
Между SOAP и транспортным уровнем необязательно должен стоять ещё один прикладной протокол — в отличие от REST, которому HTTP нужен всегда, без исключений.
На практике для тестировщика это не просто теория: если ты видишь SOAP-сервис без HTTP-заголовков в трафике или странную схему коммуникации между сервисами — не факт, что что-то сломано, возможно, это просто другой транспорт.