Что такое REST?
REST (Representational State Transfer) — это архитектурный стиль для проектирования сетевых API поверх HTTP. Он определяет набор ограничений, которые делают веб-сервисы масштабируемыми, простыми и совместимыми.
Основные принципы
- URL на основе ресурсов — каждая сущность представлена как URL эндпоинт, например
/users/123
- Стандартные HTTP методы — операции соответствуют глаголам:
GET → получить ресурс
POST → создать ресурс
PUT → обновить ресурс
DELETE → удалить ресурс
- Отсутствие состояния — каждый запрос должен содержать всю необходимую информацию; сервер не хранит состояние сессии клиента между вызовами
- Единообразный интерфейс — согласованная структура всех эндпоинтов улучшает предсказуемость и снижает связанность
- Кэшируемость — ответы можно пометить как кэшируемые, что снижает нагрузку на сервер и улучшает производительность
Почему REST важен в системном дизайне
REST — это самая широко распространённая парадигма API для веб-сервисов, потому что:
- Использует существующую HTTP инфраструктуру (load balancers, proxies, CDNs)
- Масштабируется горизонтально благодаря stateless обработке запросов
- Легко потребляется любым клиентом (браузер, мобильное приложение, сторонний сервис)
Ключевые компромиссы, о которых стоит упомянуть
- REST может привести к избыточной или недостаточной выборке данных по сравнению с альтернативами типа GraphQL
- Он лучше всего подходит для CRUD-ориентированных, resource-oriented систем
- Для event-driven или real-time сценариев альтернативы типа WebSockets или gRPC могут быть более подходящими