Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад

Какие правила включает REST-архитектурный стиль?

Этот вопрос проверяет знание конкретных ограничений и принципов, составляющих архитектурный стиль REST.

Короткий ответ

REST включает шесть основных ограничений: единообразие интерфейса, отсутствие состояния (stateless), кэшируемость, клиент-серверная архитектура, многоуровневая система и код по требованию (опционально). Эти правила обеспечивают масштабируемость, производительность и простоту взаимодействия систем.

Длинный ответ

Правила REST-архитектурного стиля

REST определяется шестью фундаментальными ограничениями, которые должны соблюдаться для соответствия архитектурному стилю.

1. Единообразие интерфейса (Uniform Interface)

Это ключевое ограничение, которое включает четыре принципа:

  • Идентификация ресурсов - каждый ресурс имеет уникальный URI

  • Манипуляция ресурсами через представления - клиент работает с представлениями ресурсов

  • Самодостаточные сообщения - каждое сообщение содержит всю информацию для его обработки

  • Гипермедиа как двигатель состояния приложения (HATEOAS) - клиент взаимодействует с API через гиперссылки

2. Отсутствие состояния (Stateless)

Каждый запрос от клиента к серверу должен содержать всю необходимую информацию:

  • Сервер не хранит состояние клиента между запросами

  • Каждый запрос независим и самодостаточен

  • Сессионные данные хранятся на клиенте

javascript

// Stateless - каждый запрос содержит всю информацию
// Плохо (stateful):
// Запрос 1: POST /login → сессия создана
// Запрос 2: GET /users → использует сессию

// Хорошо (stateless):
// Запрос 1: POST /login → возвращает токен
// Запрос 2: GET /users + заголовок Authorization: Bearer <token>

3. Кэшируемость (Cacheable)

Ответы должны явно указывать, можно ли их кэшировать:

  • Уменьшает нагрузку на сервер

  • Улучшает производительность

  • Использует HTTP-механизмы кэширования

http

HTTP/1.1 200 OK
Cache-Control: max-age=3600
ETag: "abc123"
Content-Type: application/json

4. Клиент-серверная архитектура (Client-Server)

Четкое разделение ответственности:

  • Клиент - пользовательский интерфейс и взаимодействие с пользователем

  • Сервер - хранение данных, бизнес-логика, безопасность

  • Независимая эволюция клиента и сервера

5. Многоуровневая система (Layered System)

Архитектура может состоять из нескольких уровней:

  • Клиент не знает, подключен ли он к конечному серверу или промежуточному

  • Промежуточные серверы могут обеспечивать балансировку нагрузки, кэширование, безопасность

  • Каждый уровень имеет свою ответственность

6. Код по требованию (Code on Demand) - опционально

Сервер может расширять функциональность клиента:

  • Передача исполняемого кода (JavaScript, Java applets)

  • Уменьшает предварительные знания клиента о сервере

  • Редко используется в современных REST API

Вывод: Соблюдение этих шести ограничений обеспечивает создание масштабируемых, производительных и простых в поддержке веб-сервисов, которые могут эволюционировать независимо от клиентов.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Networks

Ключевые слова

#rest

#constraints

#cacheable

Подпишись на React Developer в телеграм