Ответ
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, клиентские библиотеки).
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶