🆚 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-метод
🔸 REST фокусируется на ресурсах, доступ к которым осуществляется через URL. Это значит, например, что наш интернет-заказ имеет URI —
Производительность
🔹 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 #интеграции #сравнение
Определение
🔹 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 #интеграции #сравнение