Назовите ключевые принципы (constraints) REST

Ответ

REST (Representational State Transfer) — это архитектурный стиль, а не протокол, для создания масштабируемых и надежных веб-сервисов. Он определяет набор ограничений (constraints) для проектирования сетевых приложений.

Ключевые принципы:

  1. Клиент-серверная архитектура (Client-Server): Четкое разделение. Клиент (UI) не зависит от сервера (хранение данных), что позволяет им развиваться независимо.

  2. Отсутствие состояния (Stateless): Каждый запрос от клиента к серверу должен содержать всю информацию, необходимую для его выполнения. Сервер не хранит состояние клиента между запросами. Это повышает надежность и масштабируемость.

  3. Кэширование (Cacheable): Ответы сервера должны явно помечаться как кэшируемые или некэшируемые. Это позволяет клиентам и промежуточным узлам сохранять копии ответов для улучшения производительности.

  4. Единообразие интерфейса (Uniform Interface): Фундаментальный принцип, который стандартизирует взаимодействие. Он включает:

    • Идентификация ресурсов: Ресурсы идентифицируются через URI (например, /users/123).
    • Манипуляция ресурсами через представления: Клиент работает с представлением ресурса (например, JSON), а не с самим ресурсом на сервере.
    • Самодостаточные сообщения: Каждый ответ содержит достаточно информации для его интерпретации (например, Content-Type: application/json).
  5. Слоистая система (Layered System): Клиент не знает, подключен ли он напрямую к конечному серверу или к промежуточному (например, кэш, прокси, балансировщик нагрузки).

  6. Код по требованию (Code on Demand, опционально): Сервер может временно расширить функциональность клиента, передав ему исполняемый код (например, JavaScript).

Пример использования принципов в API:

  • Получение пользователя (ресурс): GET /users/42
  • Создание пользователя: POST /users с телом {"name": "Alice"}
  • Обновление пользователя: PUT /users/42 с телом {"name": "Alice", "email": "alice@example.com"}
  • Удаление пользователя: DELETE /users/42

Этот подход, использующий стандартные методы HTTP для операций над ресурсами, является основой RESTful API.