Ответ
REST (Representational State Transfer) — это архитектурный стиль для построения распределенных систем, в частности веб-сервисов (API). Он использует стандартные возможности протокола HTTP и следует набору ограничений и принципов.
Ключевые принципы REST:
- Единообразие интерфейса (Uniform Interface):
- Ресурсы: Все сущности (пользователи, заказы) представляются как уникально идентифицируемые ресурсы (URI), например,
/api/users/123. - Манипуляции через представления: Клиент взаимодействует с ресурсом, отправляя представление (обычно JSON или XML) через стандартные HTTP-методы.
- Самодостаточные сообщения: Каждый запрос содержит всю информацию, необходимую для его обработки.
- HATEOAS (Hypermedia as the Engine of Application State): Ответы сервера содержат гиперссылки на возможные следующие действия.
- Ресурсы: Все сущности (пользователи, заказы) представляются как уникально идентифицируемые ресурсы (URI), например,
- Отсутствие состояния (Stateless): Сервер не хранит состояние клиента между запросами. Каждый запрос должен содержать всю необходимую аутентификационную и контекстную информацию (например, в заголовках).
- Кэшируемость (Cacheable): Ответы должны явно указывать, можно ли их кэшировать и как долго, чтобы уменьшить нагрузку на сервер.
- Клиент-серверная архитектура: Четкое разделение ответственности.
- Многоуровневая система (Layered System): Архитектура может состоять из нескольких уровней (балансировщик, сервер приложений, БД), что повышает масштабируемость.
Пример RESTful-запроса и ответа:
GET /api/books/45 HTTP/1.1
Host: example.com
Accept: application/json
Authorization: Bearer <token>
{
"id": 45,
"title": "Clean Code",
"author": "Robert C. Martin",
"_links": {
"self": { "href": "/api/books/45" },
"author": { "href": "/api/authors/12" }
}
}
Стандартное соответствие HTTP-методов операциям (CRUD):
GET /api/books— получить список книг (Read).POST /api/books— создать новую книгу (Create). Тело запроса содержит данные книги.PUT /api/books/45— полностью обновить книгу с id=45 (Update).PATCH /api/books/45— частично обновить книгу.DELETE /api/books/45— удалить книгу (Delete).
Использование кодов состояния HTTP:
200 OK— успешный запрос.201 Created— ресурс создан.400 Bad Request— ошибка в запросе клиента.404 Not Found— ресурс не существует.500 Internal Server Error— ошибка на сервере.
REST доминирует как стандарт для публичных API благодаря своей простоте, использованию HTTP и хорошей поддержке инструментами.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶