Ответ
REST (Representational State Transfer) — это архитектурный стиль для построения распределенных веб-сервисов, использующий стандарты HTTP. Он основан на работе с ресурсами.
6 ключевых ограничений (принципов) REST:
- Единообразие интерфейса (Uniform Interface): Стандартизация взаимодействия.
- Ресурсы идентифицируются URI (например,
/api/books/123). - Манипуляции через HTTP-методы (
GET,POST,PUT,DELETE,PATCH). - Самодостаточные сообщения (запрос/ответ содержат всю информацию).
- HATEOAS (опционально) — ответы содержат ссылки на возможные действия.
- Ресурсы идентифицируются URI (например,
- Отсутствие состояния (Stateless): Каждый запрос от клиента содержит всю необходимую для его обработки информацию. Сервер не хранит состояние сессии между запросами.
- Кэшируемость (Cacheable): Ответы должны явно указывать, можно ли их кэшировать, чтобы повысить производительность.
- Клиент-серверное разделение (Client-Server): Четкое разделение обязанностей улучшает переносимость и масштабируемость.
- Многоуровневая система (Layered System): Архитектура может состоять из нескольких уровней (прокси, балансировщики, шлюзы), что скрыто от клиента.
- Код по требованию (Code on Demand, опционально): Сервер может временно расширять функциональность клиента, передавая исполняемый код (например, JavaScript).
Пример RESTful-запроса:
GET /api/users/42 HTTP/1.1
Host: example.com
Accept: application/json
Authorization: Bearer <token>
Пример ответа:
{
"id": 42,
"name": "Alice",
"email": "alice@example.com",
"_links": {
"self": { "href": "/api/users/42" },
"orders": { "href": "/api/users/42/orders" }
}
}