Ответ
REST (Representational State Transfer) — это архитектурный стиль, а SOAP (Simple Object Access Protocol) — строгий протокол.
| Критерий | REST | SOAP |
|---|---|---|
| Основа | Архитектурный стиль, набор принципов. | Формальный протокол со строгой спецификацией (WSDL). |
| Транспорт | Использует HTTP (и его методы: GET, POST и т.д.). | Может работать поверх HTTP, SMTP, TCP и др. |
| Формат данных | JSON, XML, текст — что угодно (чаще JSON). | Только XML. |
| Стандарты | Гибкость, меньше стандартов. | Строгие стандарты для безопасности (WS-Security), транзакций и др. |
| Производительность | Легковесный, быстрее из-за компактности JSON. | Более тяжелый из-за XML-обёрток. |
| Кэширование | Поддерживает кэширование HTTP. | Не поддерживает на уровне протокола. |
Пример REST-запроса (JSON):
GET /api/users/1 HTTP/1.1
Host: example.com
Accept: application/json
Пример SOAP-запроса (XML):
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<m:GetUserRequest xmlns:m="http://example.com/ws">
<m:UserId>1</m:UserId>
</m:GetUserRequest>
</soap:Body>
</soap:Envelope>
Вывод: REST проще и популярен для публичных веб-API, SOAP используется в корпоративных системах, где критичны стандартизация и безопасность.