Ключевые принципы и требования архитектуры REST для API
Краткий ответ
REST — это архитектурный стиль для создания веб-API с набором строгих требований: использование стандартных HTTP-методов, отсутствие состояния между запросами, кэшируемость, четкий интерфейс и разделение клиента и сервера.
Развёрнуто
Краткий ответ
REST (Representational State Transfer) — это архитектурный стиль, определяющий правила построения распределённых систем, в частности веб-API. Его основные требования включают использование стандартных HTTP-методов, статeless архитектуру, кэширование, единую точку взаимодействия и разделение ролей клиента и сервера.
Как это работает
REST базируется на шести основных ограничениях:
- Клиент-сервер: разделение обязанностей улучшает масштабируемость и независимость развития.
- Stateless (без состояния): каждый запрос содержит всю необходимую информацию, сервер не хранит состояние клиента.
- Кэшируемость: ответы могут быть помечены как кэшируемые или нет для повышения производительности.
- Унифицированный интерфейс: стандартизация взаимодействия через HTTP-методы (
GET,POST,PUT,DELETE), URI и форматы данных. - Слои системы: архитектура может быть организована в виде многослойной системы для улучшения масштабируемости.
- Код по требованию (опционально): сервер может передавать исполняемый код клиенту.
| Ограничение | Описание | Пример HTTP-метода |
|---|---|---|
| Клиент-сервер | Разделение обязанностей | — |
| Stateless | Отсутствие сохранения состояния | Запросы содержат все данные |
| Кэшируемость | Возможность кэширования ответов | Заголовки Cache-Control |
| Унифицированный интерфейс | Использование стандартных методов и URI | GET, POST, PUT, DELETE |
| Многослойность | Разделение системы на уровни | Использование прокси, шлюзов |
| Код по требованию | Передача исполняемого кода (необязательно) | JavaScript в ответе |
Пример
GET /users/123 HTTP/1.1
Host: example.com
Accept: application/json
Ответ:
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: max-age=3600
{
"id": 123,
"name": "Иван"
}
Этот запрос использует метод GET для получения данных пользователя с идентификатором 123, ответ содержит JSON и может кэшироваться в течение часа.
Что важно знать на собеседовании
- REST — не протокол, а набор архитектурных ограничений.
- Использование HTTP-методов строго по назначению (
GET— для чтения,POST— для создания и т.п.). - Stateless означает, что сервер не хранит состояние между запросами клиента.
- Правильное использование кэширования улучшает производительность.
- Умение объяснять, как REST отличается от других стилей, например SOAP.
Тема: HTTP, REST и API | Уровень: senior