Этот вопрос проверяет понимание связи между REST и базовыми протоколами веба, а также знание технологического стека, используемого в RESTful системах.
REST работает поверх протокола HTTP (Hypertext Transfer Protocol). Хотя REST - это архитектурный стиль, а не протокол, он наиболее часто реализуется с использованием HTTP благодаря его широкой распространенности, стабильности и соответствию принципам REST.
REST как архитектурный стиль может теоретически работать поверх различных протоколов, но на практике почти всегда используется HTTP.
REST идеально сочетается с HTTP по нескольким причинам:
Широкая поддержка - HTTP поддерживается всеми платформами и языками
Соответствие принципам REST - HTTP методы соответствуют операциям CRUD
Инфраструктура - существующие прокси, кэши, балансировщики нагрузки
javascript
// REST операции через HTTP методы
GET /resources → Чтение коллекции (Read)
POST /resources → Создание нового (Create)
GET /resources/1 → Чтение элемента (Read)
PUT /resources/1 → Полное обновление (Update)
PATCH /resources/1 → Частичное обновление (Update)
DELETE /resources/1 → Удаление (Delete)RESTful API используют HTTP статусы для индикации результата:
javascript
// Успешные ответы
200 OK → Успешный запрос
201 Created → Ресурс создан
204 No Content → Успешно, но нет содержимого
// Ошибки клиента
400 Bad Request → Неверный запрос
401 Unauthorized → Не авторизован
403 Forbidden → Доступ запрещен
404 Not Found → Ресурс не найден
// Ошибки сервера
500 Internal Server Error → Ошибка сервера
503 Service Unavailable → Сервис недоступенТеоретически REST может работать поверх других протоколов:
HTTPS - защищенная версия HTTP
HTTP/2 - улучшенная версия HTTP с лучшей производительностью
CoAP - Constrained Application Protocol для IoT устройств
SPDY - экспериментальный протокол (предшественник HTTP/2)
javascript
// Типичный RESTful endpoint
fetch('https://api.example.com/users/123', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer token123'
}
})
.then(response => response.json())
.then(user => console.log(user));Универсальность - работает через firewall, прокси
Инструменты - богатая экосистема инструментов и библиотек
Стандартизация - четкие стандарты и спецификации
Масштабируемость - поддержка кэширования, балансировки нагрузки
Вывод: REST преимущественно работает поверх протокола HTTP, который обеспечивает идеальную основу для реализации принципов REST благодаря своим методам, статусам и широкой инфраструктурной поддержке.