Перейти к основному содержимому

SOAP: Краткий обзор

SOAP (Simple Object Access Protocol) — протокол, который работает на XML и имеет стандарт. В отличие от REST, SOAP активно использует разные транспортные протоколы помимо HTTP, например, SMTP и FTP. Также SOAP не может использовать другой формат представления данных, кроме XML. Применяется в системах, где нужна жёсткая стандартизация, а также в legacy.

Протокол SOAP обычно использует HTTP в качестве транспорта (SOAP over HTTP). Это значит, что клиент и сервер общаются по протоколу HTTP, но по этому протоколу передаётся не просто стандартное сообщение HTTP, а некий конвертик с письмом, причем это письмо написано по правилам протокола SOAP. Сообщения передаются POST-запросами.

Структура XML-сообщения

  • Envelope — корневой элемент, который определяет сообщение и пространство имен, использованное в документе.
  • Header — содержит атрибуты сообщения, например, информацию о безопасности или о сетевой маршрутизации.
  • Body — содержит сообщение, которым обмениваются приложения.
  • Fault — необязательный элемент, который предоставляет информацию об ошибках, которые произошли при обработке сообщений.

Все данные в SOAP-сообщении размечаются тегами. Они предназначены для того, чтобы объяснять, что лежит внутри. Теги бывают <открывающие> (перед данными) и </закрывающие>. Как понять, какие теги использовать? Это как раз описывается отдельно — в файле WSDL.

WSDL (Web Services Description Language)

WSDL — язык описания веб-сервисов и доступа к ним, основанный на языке XML. В SOAP для описания своего сервиса нужно использовать строгие правила в виде файла WSDL. И клиент, и сервер руководствуются в своей работе этим файлом: читают его и разбираются, как составить запрос, на какой эндпоинт его отправлять, как прочитать ответ.

Для каждого веб-сервиса SOAP есть только одна конечная точка (endpoint). Эта конечная точка может иметь несколько функций. Какие у сервиса есть функции и по каким правилам их использовать также описывается в WSDL-файле.

Преимущества SOAP

  1. Наличие официального стандарта
  2. Наличие встроенного механизма обработки ошибок

Недостатки SOAP

  1. Сложность использования ввиду необходимости придерживаться строгого стандарта и правил
  2. Низкая скорость обработки из-за избыточного объёма передаваемых сообщений

Применение SOAP

В настоящее время SOAP применяется в системах, где требуется жёсткая стандартизация и соблюдение строгих правил безопасности. Например, в госструктурах, банкинге, финансах, здравоохранении. В остальном SOAP теряет популярность и применяется в legacy-системах.

Подборка материалов по теме

  1. Применение SOAP при интеграции систем: статья и вебинар
  2. Официальный учебник по SOAP на русском от w3.org
  3. Пример API: Взаимодействие с API Яндекс Директа по протоколу SOAP
  4. REST vs SOAP, gRPC и GraphQL: стили межсистемной интеграции по API
  5. SOAP API — обзорная мини-статья
  6. Вебинар: Что такое SOAP, WSDL, XSD / Урок 28 / Тестировщик с нуля