Содержание
Отправка кодов состояния HTTP 2xx свидетельствует о том, что запрос пользователя успешно обработан. При этом, сервер, использовать различные коды из группы 2хх, чтобы сообщить, что запрос успешный или запрос был принят к исполнению и т.д.
Классы AcceptedResult, AcceptedAtActionResult, AcceptedAtRouteResult
Классы AcceptedResult, AcceptedAtActionResult, AcceptedAtRouteResult отправляют клинту код статуса 202, который говорит о том, что запрос пользователя принят в обработку и не обязательно дожидаться её завершения. В классе Controller для формирования объектов этих типов используется порядка три метода — Accepted(), AcceptedAtAction(), AcceptedAtRoute(), каждый из которых имеет до шести различных перегрузок.
При этом, смысл всех этих методов сводится к следующему — отправить пользователю статусный код 202, URL по которому можно отслеживать состояние запроса и, если необходимо, како-либо объект в теле ответа.
Создадим следующее действие контроллера HomeController в приложении ASP.NET Core MVC:
public IActionResult LongOperation()
{
return Accepted("/result", new{name = "Sam", Age=35 });
}
здесь мы отправляем пользователю статусный код, в теле ответа — объект, а в заголовке Location — путь по которому пользователь может отслеживать выполнение запроса.
Вот как будет выглядеть ответ в браузере
Классы CreatedResult, CreatedAtActionResult, CreatedAtRouteResult
Эти классы отправляют клиенту код статуса 201 Created, означающий, что в результате успешного выполнения запроса был создан новый ресурс. Как и в случае с методами AcceptedXXX(), эти методы могут отправлять клиенту вместе со статусным кодом информацию об URL по которому создана новая сущность и содержимое в теле ответа. Например, добавим в контроллер следующее действие:
public IActionResult CreateOperation()
{
return Created("/blog", new { name = "Sam", Age = 35 });
}
Результат выполнения действия будет следующий
Класс NoContentResult
Этот класс возвращает код статуса 204, который означает, что сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения и может быть создан методом NoContent() класса Controller:
public virtual NoContentResult NoContent();
Этот метод не принимает никаких параметров и всё, что делает — отправляет статусный код 204, например выполнение этого действия контроллера
public IActionResult NoContentOperation()
{
return NoContent();
}
приведет к тому, что клиенту придут в заголовках код 204.
Классы OkResult и OkObjectResult
Эти классы отправляют пользователю код статуса 200 OK, означающий, что запрос прошел успешно, при этом, OkObjectResult используется в том случае, если в теле запроса содержится какой-либо контент. Для создания этих классов используется метод класса Controller:
public virtual OkResult Ok(); public virtual OkObjectResult Ok(object? value);
Например, посмотрим на результат следующего действия контроллера:
public IActionResult OkOperation()
{
return Ok(new { name = "Sam", Age = 35 });
}
Итого
Для отправки кодом статуса HTTP из группы 2хх в ASP.NET Core MVC предусмотрен ряд классов и методов класса Controller, позволяющих отправлять клиенту такие коды как 200, 201, 202 и 204. В зависимости от наших потребностей мы можем использовать различные перегрузки методов класса Controller для формирования наиболее информативного ответа клиенту, например, включать в тело ответа объекты, которые будут представлены в браузере в формате JSON.

