🆚 REST vs SOAP. Главное



Определение

🔹 SOAP (Simple Object Access Protocol) – протокол, который работает на XML и имеет стандарт.

🔸 REST – это архитектурный стиль, а не протокол. REST лишь определяет набор принципов и ограничений.



Протокол

🔹 SOAP активно использует разные транспортные протоколы помимо HTTP, например, SMTP и FTP. Но в большинстве случаев SOAP использует HTTP в качестве транспорта (SOAP over HTTP).

🔸 REST, как правило, хотя и не обязательно, использует HTTP. С одной стороны, REST не говорит, что нужно обязательно использовать HTTP. С другой стороны, HTTP специально спроектирован под REST. Более того, создатель REST Рэй Филдинг также является соавтором HTTP.



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

🔹 SOAP работает только с XML

🔸 В REST нет ограничений по формату сообщений. REST API могут поддерживать любой формат сообщений, например XML, JSON, RSS, CSV, HTML и другие



Подход к API

🔹 SOAP основан на подходе удалённого вызова процедур (RPC). Это вызов функции в коде, только по сети. Например, чтобы получить информацию о заказе, нужно вызвать SOAP-метод getOrder, чтобы оформить заказ – makeOrder и т.д.

🔸 REST фокусируется на ресурсах, доступ к которым осуществляется через URL. Это значит, например, что наш интернет-заказ имеет URI — /api/v1/order. Если мы хотим получить информацию о заказе, нужно вызвать HTTP метод GET /api/v1/order, чтобы оформить заказ, вызовем POST /api/v1/order. В обоих случаях ресурс один и тот же, а методы работы с ним разные.



Производительность

🔹 SOAP работает медленнее из-за избыточного объёма передаваемых сообщений

🔸 REST быстрее благодаря кэшированию (принцип №3) и меньшему размеру сообщений



Гибкость

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

🔸 REST проще масштабировать, так как сервер не сохраняет состояние клиента, поэтому REST API обрабатывает каждый новый запрос независимо от предыдущих.



Простота

🔹 SOAP сложнее, требует глубокого понимания всех задействованных протоколов и их строгих правил. Реализация SOAP API требует описания WSDL для каждого сервиса, обрабатывать и анализировать XML сложнее.

🔸 REST проще в реализации и более “человекопонятен”. Он не привязан к XML и чаще всего использует JSON.



Обработка ошибок

🔹 В протокол SOAP встроена логика обработки ошибок. SOAP API позволяет возвращать XML-сообщение Retry с кодом ошибки и ее объяснением.

🔸 REST использует протокол HTTP, который может возвращать коды состояний



Раскрытие API

🔹 SOAP-сервис всегда должен иметь WSDL. Плюс этого в том, что WSDL даёт чёткие правила, как отправлять и по какой структуре отправлять запросы и принимать ответы

🔸 REST не имеет языка описания веб-сервисов. Однако на помощь приходит Swagger (OpenAPI)



Безопасность

🔹 SOAP имеет встроенное расширение безопасности – WS Security, которое регулирует процедуры конфиденциальности и аутентификации для обмена сообщениями

🔸 REST не предусматривает никаких специальных мер безопасности. Безопасность REST может быть обеспечена только за счет HTTPS



Использование

🔹 SOAP применяется в системах, где нужна жёсткая стандартизация, а также в legacy

🔸 REST используется повсеместно





📌 Выводы

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



📎 Полезные материалы

1. О REST на нашем канале

2. Про SOAP

3. Статья про разницу SOAP и REST от Amazon (на русском)

4. SOAP и REST API: Ключевые различия, объясненные для новичков

5. REST vs SOAP на Medium (через VPN)

6. Что происходит, когда мы отправляем SOAP или REST запрос — 3,5 минуты видео



#api #интеграции #сравнение