Ответ
REST (Representational State Transfer) — это набор архитектурных ограничений для построения веб-сервисов. Его основные принципы:
-
Единообразие интерфейса (Uniform Interface): Стандартизация взаимодействия.
- Ресурсы идентифицируются URI (например,
/api/users/1). - Действия над ресурсами определяются HTTP-методами: GET (чтение), POST (создание), PUT (полное обновление), PATCH (частичное обновление), DELETE (удаление).
- Самодостаточные сообщения (заголовки, тело).
- HATEOAS (Hypermedia as the Engine of Application State) — ссылки на связанные ресурсы в ответе.
- Ресурсы идентифицируются URI (например,
-
Отсутствие состояния (Stateless): Каждый запрос от клиента содержит всю информацию, необходимую серверу для его обработки. Сервер не хранит состояние сессии клиента.
-
Кэшируемость (Cacheable): Ответы сервера должны явно указывать, можно ли их кэшировать, чтобы повысить производительность.
-
Клиент-серверная архитектура: Четкое разделение обязанностей.
-
Многоуровневая система (Layered System): Клиент не знает, взаимодействует ли он с конечным сервером или с промежуточным узлом (прокси, балансировщик).
-
Код по требованию (Code on Demand, опционально): Сервер может временно расширять функциональность клиента, передавая исполняемый код (например, JavaScript).
Пример REST-запроса и ответа:
GET /api/users/1 HTTP/1.1
Host: api.example.com
Accept: application/json
{
"id": 1,
"name": "John Doe",
"_links": {
"self": { "href": "/api/users/1" },
"posts": { "href": "/api/users/1/posts" }
}
}