Ответ
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 и хорошей поддержке инструментами.
Видео-ответы
▶
Собеседование в Т1 Иннотех на позицию Middle Java ЛайвКодинг
▶
Middle Java разработчик удивил на собеседовании знаниями уровня Senior!
▶
Как пройти СОБЕСЕДОВАНИЕ на C# & .Net РАЗРАБОТЧИКА (3)
▶
РЕАЛЬНОЕ СОБЕСЕДОВАНИЕ ПО NODEJS НА 260.000 РУБ
▶
Тестовое собеседование на .NET Middle разработчика
▶
Разработка. СОБЕСЕДОВАНИЕ Middle DevOps инженера. Часть 3.
▶
Собеседование на позицию Backend Developer Python + FastAPI Middle #3
▶
Подготовка к Java-собеседованию: Spring, JPA, многопоточность | Тестовое интервью
▶
Тестовое интервью с Владиславом на позицию Junior Python разработчик
▶
Собеседование junior python разработчик Антон Серебряков
▶
Собеседование frontend junior разработчика (CSS, HTML, JS, React, Typescript)
▶
Тестовое интервью с Владимиром на позицию Junior Python разработчик
▶
Тестовое интервью Анны на позицию Junior Python Разработчик
▶
Mock-интервью с Артуром на позицию Junior Python-разработчик
▶
Собеседование frontend junior разработчика 2024 (CSS, HTML, JS, React, Typescript, Graphql)
▶
Frontend Собеседование с разбором. Путь к трудоустройству 2024
▶
Техническое собеседование для System Analyst
▶
Программист в 13 лет? / Техсобес на позицию Trainee Python Developer / Mock interview
▶
Собеседование для Python Junior разработчика: реальное мок-интервью с теорией и лайвкодингом
▶
Тестовое собеседование C# | Unity разработчик пробуется в ASP.NET Core
▶
Мок-собеседование Junior Python developer
▶
Собеседование ручного тестировщика | Выпуск №4
▶
Собеседование ручного тестировщика
▶
Собеседование frontend junior+ разработчика (CSS, HTML, JS, React, Typescript, Redux)
▶
Собеседование Junior Python Developer
▶
Техническое собеседование Junior Python разработчика
▶
75 QA Interviews Stream. 03.12.2022 at 10:30 GMT(UTC) +3