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 - подписывайтесь и читайте закреп.