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 — для внутренних сервисов.
