Этот вопрос проверяет понимание архитектурного стиля REST, который является стандартом для построения веб-API.
REST (Representational State Transfer) — это архитектурный стиль для создания веб-сервисов. Он основан на нескольких ключевых принципах: использование HTTP-методов (GET, POST, PUT, DELETE) для определения действий, stateless-взаимодействие (каждый запрос содержит всю информацию для его обработки), адресация ресурсов через URL и представление данных в стандартных форматах, таких как JSON или XML.
REST — это не протокол, а набор рекомендаций и ограничений для построения масштабируемых и надежных веб-сервисов.
Единообразие интерфейса (Uniform Interface)
Это самый важный принцип. Он включает в себя:
Ресурсы: Все данные представлены в виде ресурсов (пользователь, заказ), доступ к которым осуществляется через уникальный URL (например, /api/users/123).
HTTP-методы: Действия с ресурсами определяются методами HTTP:
GET - получить ресурс.
POST - создать новый ресурс.
PUT - обновить существующий ресурс.
DELETE - удалить ресурс.
Самодостаточные сообщения (Self-descriptive messages): Каждое сообщение (запрос/ответ) содержит достаточно информации для его понимания (например, заголовок Content-Type: application/json).
Stateless (Без состояния)
Сервер не хранит состояние клиента между запросами. Каждый запрос должен содержать всю необходимую информацию для его выполнения (например, токен аутентификации).
Кэшируемость (Cacheable)
Ответы сервера должны явно указывать, можно ли их кэшировать и как долго. Это повышает производительность.
Клиент-серверная архитектура (Client-Server)
Четкое разделение ответственности: клиент отвечает за пользовательский интерфейс, сервер — за хранение данных и бизнес-логику.
Слоистая система (Layered System)
Клиент не знает, общается он напрямую с сервером или через промежуточные слои (кэш, балансировщик нагрузки, шлюз). Это повышает масштабируемость.
Пример RESTful запроса:DELETE /api/products/45 HTTP/1.1 — это понятная команда для удаления товара с ID 45.
Вывод: REST — это мощный и стандартизированный способ создания API, который использует уже существующие возможности протокола HTTP. Его принципы делают API предсказуемым, простым для понимания и эффективным.