Что такое REST и SOAP
Что проверяют
Понимаете ли вы, что сравниваются разные сущности: строгий протокол и архитектурный стиль. И знаете ли, где SOAP до сих пор уместен.
Как отвечать
SOAP это протокол обмена сообщениями со строгой структурой: конверт XML с заголовком и телом, контракт описан в WSDL, по нему генерируются клиенты. Транспорт не обязательно HTTP, может быть и очередь сообщений.
REST это архитектурный стиль поверх HTTP: ресурсы адресуются URL, действия выражаются методами, формат обычно JSON, контракт описывается OpenAPI, но это соглашение, а не часть стиля.
Практические различия:
- контракт: у SOAP жёсткий и машиночитаемый по построению, у REST по договорённости;
- формат: только XML против чего угодно, обычно JSON;
- объём: конверт XML заметно тяжелее;
- ошибки: SOAP Fault внутри тела при коде 200 против кодов состояния HTTP;
- кэширование: у REST работает штатными средствами HTTP, у SOAP практически нет;
- встроенные стандарты: WS-Security, WS-ReliableMessaging, транзакции. У REST это делается вручную или сторонними средствами.
Где SOAP жив: банки, страхование, госсервисы, интеграции с корпоративными системами, то есть там, где нужен строгий контракт, подпись на уровне сообщения и гарантии доставки.
Где спотыкаются
Сравнивают их как два протокола, не замечая разницы в природе.
Говорят, что SOAP устарел, не объясняя, чем он до сих пор незаменим.
Не знают, что ошибка SOAP приходит с кодом 200 и что это ломает наивные проверки.
Считают, что REST обязан отдавать JSON.