Найти в Дзене

Использование Soap Api. Разница между REST и SOAP. Часть 1.

Оглавление

В поборке этих статей разберём, что же такое API и различие между Soap и Rest.

API

API (Application Programming Interface) — это программный интерфейс приложения, который описывает способы взаимодействия одной компьютерной программы с другой. По сути, API выступает посредником между двумя приложениями или сервисами, предоставляя решения (классы, функции, структуры), реализованные в одном сервисе, и создавая среду для создания нового приложения с использованием этих решений.

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

Существует множество видов API, но в мире веб-приложений наиболее распространены REST и SOAP, причем SOAP постепенно теряет свою популярность.

SOAP расшифровывается как Simple Object Access Protocol. В переводе с английского — «простой протокол для доступа к объектам».

Simple Object Access Protocol (SOAP) — это основанный на XML протокол, предназначенный для обмена информацией в распределённых системах. SOAP устанавливает стандарт взаимодействия клиент-сервер и регламентирует, как должен осуществляться вызов, как должны передаваться параметры и возвращаемые значения.

Для представления любой информации, передаваемой от клиента к серверу и наоборот, используется XML. Для передачи сообщений могут использоваться различные протоколы и продукты, такие как HTTP, HTTPS, SMTP, но чаще всего применяется протокол HTTP.

SOAP основан на XML, что делает его «тяжёлым» из-за большого количества тегов (<ResultStatusCheck>1</ResultStatusCheck>) и относительно трудночитаемым. Однако он до сих пор используется в крупных enterprise-системах, а также для взаимодействия систем, расположенных в пределах одной локальной сети. Если вы будете тестировать, например, внутрибанковскую систему, которая эксплуатируется уже лет десять, то с большой долей вероятности столкнётесь с SOAP API.

Структура SOAP-запроса

SOAP-запрос — это XML-документ, включающий:

  1. Envelope (конверт) — корневой элемент, который определяет сообщение и пространство имён, используемое в документе.
  2. Header (заголовок) — содержит атрибуты сообщения, например, информацию о безопасности или о сетевой маршрутизации.
  3. Body (тело) — содержит сообщение, которым обмениваются приложения.
  4. Fault — необязательный элемент. Предоставляет информацию об ошибках, которые произошли при обработке сообщений. И запрос, и ответ должны соответствовать структуре SOAP.

Простой пример SOAP-запроса, обращение к сервису Яндекс.Спеллер:

-2

Пример ответа:

-3

Для описания и стандартизации конкретной реализации протокола применяется формат WSDL.

WSDL (Web Services Description Language) — это язык описания веб-сервисов и доступа к ним, основанный на языке XML. Эта аббревиатура также используется для любого конкретного WSDL-описания сервиса, например, можно сказать: «Вот WSDL для API Яндекс.Спеллера».

Описание представляет собой текстовый WSDL-файл, который содержит машиночитаемое описание того, как можно вызвать службу, какие параметры она ожидает и в каком формате она возвращает данные. Следовательно, его назначение примерно аналогично назначению сигнатуры типа в языке программирования.

Используют ли Soap на проектах?

Из за своей сложности SOAP используется не часто. В основном это редкие случаи, когда уже есть настроенный протокол и его не меняли. Замена SOAP это REST.

REST и SOAP

REST и SOAP на самом деле несопоставимы. REST — это архитектурный стиль. SOAP — это формат обмена сообщениями. Давайте сравним популярные реализации стилей REST и SOAP.

🔵Пример реализации RESTful: JSON через HTTP

🟡Пример реализации SOAP: XML поверх SOAP через HTTP

На верхнем уровне SOAP ограничивает структуры ваших сообщений, тогда как REST — это архитектурный подход, ориентированный на использование HTTP в качестве транспортного протокола.

🟡Специфика SOAP — это формат обмена данными. С SOAP это всегда SOAP-XML, который представляет собой XML, включающий:
— Envelope (конверт) – корневой элемент, который определяет сообщение и пространство имен, использованное в документе,
— Header (заголовок) – содержит атрибуты сообщения, например: информация о безопасности или о сетевой маршрутизации,
— Body (тело) – содержит сообщение, которым обмениваются приложения,
— Fault – необязательный элемент, который предоставляет информацию об ошибках, которые произошли при обработке сообщений. И запрос, и ответ должны соответствовать структуре SOAP.

🔵Специфика REST — использование HTTP в качестве транспортного протокола. Он подразумевает наилучшее использование функций, предоставляемых HTTP — методы запросов, заголовки запросов, ответы, заголовки ответов и т. д.

Формат обмена сообщениями

🟡В SOAP вы используете формат SOAP XML для запросов и ответов.

🔵В REST такого фиксированного формата нет. Вы можете обмениваться сообщениями на основе XML, JSON или любого другого удобного формата. JSON является самым популярным среди используемых форматов.

Определения услуг

🟡SOAP использует WSDL (Web Services Description Language) — язык описания веб-сервисов и доступа к ним, основанный на языке XML.

🔵REST не имеет стандартного языка определения сервиса. Несмотря на то, что WADL был одним из первых предложенных стандартов, он не очень популярен. Более популярно использование Swagger или Open API.

Транспорт

🟡SOAP не накладывает никаких ограничений на тип транспортного протокола. Вы можете использовать либо Web протокол HTTP, либо MQ.

🔵REST подразумевает наилучшее использование транспортного протокола HTTP

Простота реализации

RESTful веб-сервисы, как правило, гораздо проще реализовать, чем веб-сервисы на основе SOAP.

🔵REST обычно использует JSON, который легче анализировать и обрабатывать. В дополнение к этому, REST не требует наличия определения службы для предоставления веб-службы.

🟡Однако в случае SOAP вам необходимо определить свой сервис с использованием WSDL, и при обработке и анализе сообщений SOAP-XML возникают большие накладные расходы.

Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!

Обучение тестированию