🧼 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 |