SOAP (Simple Object Access Protocol) – это протокол для обмена структурированными сообщениями в формате XML между приложениями через сеть. Он используется в интеграционных проектах для обеспечения взаимодействия между различными системами, когда требуется высокая надежность передачи данных и строгий контроль над структурой сообщений.
Ходят слухи, что интеграции на SOAP разрабатывали еще мамонты 🦣
Основные особенности SOAP:
1️⃣ Структурированные сообщения: SOAP-сообщения состоят из конверта (envelope), заголовка (header) и тела (body). Это позволяет четко определить структуру передаваемых данных и дополнительные параметры обработки.
2️⃣ Использование WSDL: Веб-сервисы, работающие по SOAP, обычно сопровождаются описанием интерфейсов с помощью Web Services Description Language (WSDL). WSDL-файл содержит информацию о методах сервиса, параметрах и форматах данных, что упрощает взаимодействие клиентов с сервисом.
3️⃣ Поддержка сложных типов данных: В отличие от RESTful API, где данные передаются преимущественно в формате JSON, SOAP может работать с более сложными структурами данных, включая вложенные объекты и массивы.
4️⃣ Поддержка XSD: В wsdl структура тела(body) описывается с помощью XSD-Schema. XSD - очень крутой инструмент для описания структур в формате XML. Подробнее об этом тут)
Но по сути все особенности «мыла» выступают и его же основными проблемами. А если быть точнее, то разработка API в SOAP банально сложнее и дольше, чем сделать примерно тоже самое на RESTful API. А зачем усложнять и делать дольше, если можно этого не делать? Именно поэтому «чилловый» API 🤩 и начал вытеснять собой «мыло».
Сейчас, к сожалению(или к счастью) SOAP можно встретить все реже и реже. Обычно он вылазит из каких-то потайных углов legacy-систем, куда шаловливые пальчики разработчиков еще не успели добраться в рамках рефакторинга.