{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","hash":"257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

REST vs SOAP

Любимый вопрос на собеседовании “Чем отличаются REST и SOAP?”

Но вообще это несравнимые вещи, это как сравнивать рыбу и мясо.

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

Сначала давайте вспомним определения:

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

Из данных определений можно понять, что эти технологии невозможно сравнить, но мы можем сравнить реализацию этих технологий.

Давайте определим основные параметры, по которым будем сравнивать реализацию:

  • Формат обмена сообщениями
  • Транспорт
  • Простота реализации

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

  • В SOAP для обмена сообщениями используется XML.
  • В REST фиксированного формата нет, вы можете использовать как XML, так и JSON и другие типы данных. Но чаще используют все-таки JSON, т. к. этот формат более легкий и простой по сравнению, например, с XML*. Это положительно сказывается на скорости взаимодействия.

Транспорт

  • SOAP может использовать в качестве транспорта как протокол прикладного уровня HTTP, так и другие протоколы такие, как FTP, SMTP и др. Однако каждые протоколы имеют свои особенности реализации, которые должны быть определены отдельно. Чаще всего SOAP используют поверх HTTP.
  • REST ориентирован на использование HTTP в качестве транспортного протокола. Существуют так называемые REST-Patterns, которые различаются связыванием HTTP-методов с тем, что они делают.

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

  • RESTfull веб-сервисы, как правило, гораздо проще реализовывать, так как чаще всего для обмена данных используется JSON, который легче анализировать и обрабатывать всем участникам клиент-серверного взаимодействия. REST не требует определения сервисов для доступа к API.
  • SOAP веб-сервисы реализуется только через XML, что в свою очередь влечет за собой большие накладные расходы на их анализ и обработку. Также для доступа к API, SOAP требуется определения сервисов с использованием языка WSDL.

Надеюсь, вам стало понятнее, что имеется в виду, когда вам задают вопрос о сравнении REST и SOAP.

*Давайте наглядно рассмотрим разницу в синтаксисе XML и JSON.

XML

XML (Xtensible Markup Language — расширяемый язык разметки) позволяет описывать документы с помощью тегов, которые можно задавать самостоятельно.

XML-файлы имеют древовидную структуру, то есть в них используется набор тегов, внутри которых могут находиться другие теги со своими значениями. Теги заключаются в скобки <>.

Самый верхнеуровневый элемент называется корневым — это тег, с которого начинается и заканчивается документ.

Пример:

<client>

<name>Иван</name>

<phone>2456789</phone>

</client>

JSON

JSON (JavaScript Object Notation - описание данных в виде JavaScript-объекта) - формат, хранящий структурированную информацию. Сейчас он не зависит от JavaScript и может использоваться в любом языке программирования.

В качестве значений в JSON могут быть объекты (заключены в фигурные скобки {}) и массивы (в квадратных скобках []).

JSON-объект — это неупорядоченное множество пар «ключ:значение». Ключи должны быть строками, содержащими последовательность символов, которые заключены в кавычки. Ключ мы передаем серверу.

Значения могут быть представлены в форме массива, объекта, строки, логического значения, числа или значения null. Между ключом и значением ставится символ двоеточия “:”.

Пример выше мы можем записать в таком виде:

{

«name": "Иван»,

«phone»: 2456789

}

Как видите, JSON использует меньше символов для описания той же информации, что и XML.

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

0
Комментарии
-3 комментариев
Раскрывать всегда