Анализ данных • 05 сентября 2024 • 5 мин чтения

Расширенные возможности протокола SOAP и случаи, когда он нужен

Рассказываем, в каких случаях поможет протокол обмена сообщениями SOAP, а в каких лучше использовать REST, и показываем пример работы SOAP в Python.

Что такое SOAP и когда его нужно использовать

SOAP (Simple Object Access Protocol) — это протокол обмена сообщениями в виде XML. Он помогает доставлять системные сообщения от одного сервера к другому. SOAP может работать через ряд распространённых протоколов, таких как HTTP, SMTP, TCP или UDP. Его используют в трёх случаях:

1. Нужны безопасность и надёжность — когда приложение требует сложных механизмов аутентификации, шифрования и конфиденциальности. К примеру, SOAP используют в банковских приложениях для безопасных транзакций и передачи данных от клиентов.

2. Нужна интеграция с существующими системами — если нужно интегрироваться с устаревшими системами или корпоративными приложениями, которые уже используют SOAP.

3. Нужна поддержка сложных операций — если нужны многоуровневая обработка операций и транзакций. К примеру, протокол применяют в CRM и других программах для бизнеса.

SOAP чаще всего используют в крупных учреждениях, где нужно обеспечить безопасный и надёжный обмен сообщениями между сайтами и приложениями. Например, протокол SOAP применяют банки, брокеры, страховые компании, госучреждения, сервисы по продаже и бронированию билетов и т. д.

Использовать протокол SOAP учат на курсе «Системный аналитик». Студенты за 9 месяцев осваивают рабочие инструменты системных аналитиков, языки программирования, выполняют проекты и практические работы. По окончании обучения студенты получают диплом о профессиональной подготовке и сертификат.

Что может SOAP API

1. Интегрироваться с другими платформами. Для форматирования сообщений SOAP API использует XML — это текстовый формат, он легко читается и может быть обработан практически любым языком программирования, который поддерживает текстовые форматы: Java, C#, Python, PHP и другими.

2. Поддерживать различные протоколы передачи. SOAP может работать через такие протоколы, как HTTP, SMTP и FTP. Это позволяет интегрировать веб-сервисы в существующие системы без изменений в инфраструктуре.

3. Добавлять дополнительные функции. SOAP позволяет добавлять дополнительные функции через расширения, например WS-Security (защита данных) и WS-ReliableMessaging (надёжная доставка сообщений). Это помогает адаптировать веб-сервисы под специфические требования бизнеса.

4. Определять ошибки. SOAP определяет стандартный способ обработки ошибок. Когда происходит ошибка, сервер может вернуть SOAP Fault, который содержит информацию о проблеме, — это помогает понять природу проблемы и способы её решения.

5. Поддерживать асинхронные вызовы. Протокол позволяет клиентам продолжать выполнение других задач, пока ожидается ответ от сервера.

Расширенные возможности SOAP

SOAP предлагает несколько расширенных возможностей. Вот некоторые из них:

WS-Security — поддерживает расширенные механизмы безопасности. Его используют для подтверждения личности пользователей и систем, для защиты данных при передаче и обеспечения их подлинности.

WS-ReliableMessaging — обеспечивает доставку сообщений. Он гарантирует, что сообщения будут доставлены точно и в правильном порядке даже при сетевых сбоях или временных отключениях. Например, протокол применяют при отправке запросов на переводы между банками или в системах обработки медицинских данных, чтобы информация о пациентах доставлялась без потерь и в правильном порядке.

WS-Addressing — позволяет указывать адреса сообщений в веб-сервисах и обрабатывать асинхронные вызовы. Благодаря этому протоколу отправители и получатели сообщений смогут определять, как и куда должны направляться сообщения.

Например, протокол применяют при отправке заказа от клиента к серверу, когда нужно указать, куда отправить уведомление о статусе заказа — например, на электронную почту или личный кабинет пользователя.

WS-Coordination — обеспечивает координацию между несколькими веб-сервисами, позволяет им работать совместно в рамках одной транзакции или процесса.

Отличия SOAP от REST

Как и SOAP, REST придерживается формата «запрос-ответ», но есть и отличия.

Пример SOAP API в Python

Рассмотрим пример использования SOAP в Python. Чтобы не писать вручную полный XML-код для выполнения запросов API и не анализировать XML-код ответа, установим библиотеку zeep — модуль, который написан на Python, — чтобы упростить работу с XML.

В Python есть библиотеки для разных задач. Например, с помощью библиотеки pytz можно работать с часовыми поясами, а с помощью spyne — написать и вызвать веб-сервис SOAP

Теперь запустите клиент SOAP на основе конечной точки SOAP и вызовите службу с помощью функции getuser с параметром, например 1, 2, 3.

Getuser() — это функция Getpass в Python, которая возвращает имя пользователя в системе. Getuser() используют, например, при разработке приложений с предусмотренной аутентификацией или персонализацией

Сообщения SOAP состоят максимум из четырёх блоков:

● Soap:Envelope — механизм идентификации XML как SOAP;
● soap:Header — заголовок, механизм добавления функций в сообщения SOAP;
● soap:Body — тело сообщения SOAP.

Ещё можно прописать soap:Fault — это механизм, который показывает ошибки, когда вызов SOAP API не удаётся завершить. Например, он может показать неточное форматирование SOAP, ошибку обработки на сервере и несоответствие типов данных.

Вот пример, как может выглядеть структура вызова SOAP и ответ на него:

Вызовы SOAP API можно выполнять с помощью обычного HTTP-запроса. Посмотрим, как будет выглядеть тот же вызов из примера выше, с использованием библиотеки запросов Requests для Python — она позволяет работать с HTTP-запросами любого уровня сложности.

В этом примере response.content будет включать необработанный XML-ответ, который нужно проанализировать, чтобы определить имя пользователя и другие данные, возвращаемые SOAP API

Совет эксперта

Василий Беляков
SOAP на первый взгляд может показаться сложным явлением на фоне того же REST, с которым его часто не совсем корректно сравнивают. SOAP можно сравнить с грамотно составленным юридическим контрактом — сложно, но зато практически полностью исключает вероятность ошибок. Для более успешного знакомства поищите простые примеры SOAP-сервисов, чтобы понять, как они работают.
Статью подготовили:
Василий Беляков
Яндекс Практикум
Наставник курса «Инженер по тестированию»
Валентина Бокова
Яндекс Практикум
Редактор
Полина Овчинникова
Яндекс Практикум
Иллюстратор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться

Успейте начать учебу в Практикуме до конца ноября со скидкой 20%

Thu Sep 26 2024 02:39:31 GMT+0300 (Moscow Standard Time)