К списку
HTTP, REST и APISeniorТехническое

Ключевые принципы и требования архитектуры 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