🧼 SOAP

XML-протокол сервисов: структура конверта, WSDL, отличия от REST и пример запроса.

Шпаргалки · Аналитика · #soap #xml #wsdl #api

Что это

SOAP (Simple Object Access Protocol) это протокол обмена структурированными XML-сообщениями, чаще по HTTP. Контракт описывается в WSDL. Распространён в банках, государственных и корпоративных системах.

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

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:m="http://example.com/shop">
  <soap:Header>
    <m:Auth><m:Token>abc123</m:Token></m:Auth>
  </soap:Header>
  <soap:Body>
    <m:GetPrice>
      <m:ProductId>42</m:ProductId>
    </m:GetPrice>
  </soap:Body>
</soap:Envelope>
Часть Назначение
Envelope корень сообщения
Header служебное: авторизация, транзакции (необязательно)
Body вызов или ответ
Fault ошибка внутри Body

Ошибка

<soap:Fault>
  <faultcode>soap:Client</faultcode>
  <faultstring>Товар не найден</faultstring>
</soap:Fault>

Запрос по HTTP

POST /ShopService HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://example.com/shop/GetPrice"

SOAP 1.2: Content-Type: application/soap+xml.

WSDL

Описывает сервис: типы (types, схема XSD), сообщения (message), операции (portType), привязку к протоколу (binding), адрес (service). По WSDL генерируют клиентов (wsimport, svcutil, Zeep, SoapUI).

Тестирование

SoapUI, Postman (раздел «Raw» с XML), curl -H "Content-Type: text/xml" -d @req.xml URL.

SOAP и REST

SOAP REST
Формат XML JSON, XML и др.
Контракт WSDL, строгий OpenAPI, по желанию
Транспорт HTTP, SMTP, очереди HTTP
Операции вызов методов ресурсы и HTTP-методы
Стандарты WS-Security, WS-AtomicTransaction OAuth 2.0, JWT
Вес выше ниже
Применение корпоративные интеграции, строгие контракты веб и мобильные API