Ответ
REST (Representational State Transfer) — это архитектурный стиль для построения распределенных систем, в частности веб-сервисов (API). Он использует протокол HTTP как есть, опираясь на его стандартные методы и статусы.
Ключевые принципы REST:
- Ресурсы (Resources): Все данные и сущности (пользователи, заказы, товары) представляются в виде уникальных URI (например,
/api/users/123). - Единообразие интерфейса (Uniform Interface): Взаимодействие с ресурсами происходит через стандартные HTTP-методы:
GET— получение ресурса.POST— создание нового ресурса.PUT/PATCH— полное или частичное обновление ресурса.DELETE— удаление ресурса.
- Отсутствие состояния (Stateless): Каждый запрос от клиента должен содержать всю необходимую информацию для его обработки. Сервер не хранит состояние сессии клиента между запросами.
- Кэшируемость (Cacheable): Ответы сервера должны явно указывать, можно ли их кэшировать и как долго, что повышает производительность.
- Слоистая система (Layered System): Архитектура может состоять из нескольких слоев (балансировщики, прокси, шлюзы), и клиент не должен знать, взаимодействует ли он напрямую с конечным сервером.
Пример RESTful контроллера на C# (ASP.NET Core):
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
private readonly IProductRepository _repository;
[HttpGet]
public ActionResult<IEnumerable<Product>> GetAll() => Ok(_repository.GetAll());
[HttpGet("{id}")]
public ActionResult<Product> GetById(int id)
{
var product = _repository.GetById(id);
return product != null ? Ok(product) : NotFound();
}
[HttpPost]
public ActionResult<Product> Create([FromBody] Product product)
{
var createdProduct = _repository.Add(product);
return CreatedAtAction(nameof(GetById), new { id = createdProduct.Id }, createdProduct);
}
}
Преимущества: простота, масштабируемость, независимость от клиентской платформы и хорошая поддержка инструментами (браузеры, Postman, клиентские библиотеки).
Видео-ответы
▶
Собеседование в Т1 Иннотех на позицию Middle Java ЛайвКодинг
▶
Middle Java разработчик удивил на собеседовании знаниями уровня Senior!
▶
Как пройти СОБЕСЕДОВАНИЕ на C# & .Net РАЗРАБОТЧИКА (3)
▶
РЕАЛЬНОЕ СОБЕСЕДОВАНИЕ ПО NODEJS НА 260.000 РУБ
▶
#1 Публичное собеседование - Back C# asp.net
▶
Разработка. СОБЕСЕДОВАНИЕ Middle DevOps инженера. Часть 3.
▶
Собеседование Middle PHP разработчика
▶
Собеседование на позицию 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 разработчика: реальное мок-интервью с теорией и лайвкодингом
▶
Мок-собеседование Junior Python developer
▶
Собеседование ручного тестировщика | Выпуск №4
▶
Собеседование ручного тестировщика
▶
Собеседование frontend junior+ разработчика (CSS, HTML, JS, React, Typescript, Redux)
▶
Собеседование Junior Python Developer