REST (Representational State Transfer) — это архитектурный стиль для распределенных гипермедийных систем. Он не является стандартом или набором инструментов, а представляет собой набор принципов и ограничений.
Ключевые принципы REST:
- Клиент-сервер: Четкое разделение ролей клиента и сервера. Клиент инициирует запросы, сервер их обрабатывает.
- Stateless (отсутствие состояния): Каждый запрос от клиента к серверу должен содержать всю необходимую информацию для обработки. Сервер не хранит состояние клиента между запросами.
- Cacheable (кешируемость): Ответы сервера могут быть помечены как кэшируемые, что позволяет клиентам повторно использовать предыдущие ответы для тех же запросов, улучшая производительность.
- Layered System (многослойная система): Клиент не знает, напрямую ли он связан с конечным сервером или находится между ним и промежуточными серверами (например, прокси, балансировщики нагрузки).
- Code-On-Demand (необязательно, код по требованию): Сервер может временно расширять или настраивать функциональность клиента, передавая исполняемый код.
- Uniform Interface (единый интерфейс): Ключевой принцип, состоящий из четырех ограничений:
- Identification of Resources (Идентификация ресурсов): Ресурсы (данные или объекты) идентифицируются с помощью Universal Resource Identifiers (URIs).
- Manipulation of Resources Through Representations (Манипуляция ресурсов через их представления): Клиент взаимодействует с ресурсами через их представления (например, JSON, XML). Изменение представления ресурса приводит к изменению самого ресурса.
- Self-Descriptive Messages (Самоописывающие сообщения): Каждое сообщение содержит достаточно информ