REST API

Representational State Transfer — архитектурный стиль для веб-API (Roy Fielding, диссертация 2000, основатель HTTP). Принципы: stateless (каждый запрос независим), client-server разделение, cacheable, uniform interface (стандартные HTTP методы). HTTP методы: GET (чтение), POST (создание), PUT/PATCH (обновление), DELETE (удаление). Stateless: сервер не хранит состояние клиента между запросами (аутентификация через токены в каждом запросе). Ресурсы идентифицируются URL: /users/123, /posts/456/comments. Коды ответов: 200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Internal Error. Стандарт с 2000-х (90%+ публичных API). Альтернативы: GraphQL, gRPC, SOAP (устарел)

📖2 мин чтения📊Уровень 7📅16 апреля 2026 г.

Загрузка карты...

REST (Representational State Transfer) — архитектурный стиль для создания веб-сервисов, описанный Роем Филдингом в его диссертации 2000 года. Не протокол и не стандарт, а набор архитектурных ограничений. REST API — самый распространённый способ взаимодействия между клиентом и сервером в современном вебе (около 80% публичных API).

Принципы REST

  • Stateless (без состояния) — каждый запрос содержит всю необходимую информацию; сервер не хранит состояние клиента. Аутентификация — через токен в каждом запросе
  • Client-Server разделение — интерфейс отделён от хранения данных
  • Cacheable — ответы могут кэшироваться (заголовки Cache-Control)
  • Uniform Interface — единый интерфейс через стандартные HTTP-методы и ресурсы
  • Layered System — клиент не знает, общается ли с конечным сервером или прокси

HTTP-методы и ресурсы

Ресурсы идентифицируются URL: /users/123, /posts/456/comments. HTTP-методы определяют операцию: GET (чтение), POST (создание), PUT (полное обновление), PATCH (частичное), DELETE (удаление). Коды ответов: 200 OK, 201 Created, 204 No Content, 400 Bad Request, 401 Unauthorized, 404 Not Found, 500 Internal Server Error.

REST vs GraphQL vs gRPC

REST: прост, понятен, cacheable, текстовый (JSON/XML). GraphQL: клиент запрашивает точно нужные данные; избегает over/under-fetching; сложнее кэшировать. gRPC: бинарный протокол (Protobuf), очень быстрый, подходит для микросервисов. REST — выбор по умолчанию для публичных API; gRPC — для внутренних сервисов.