Контроллеры ASP.NET Core MVC. Отправка кодов состояния HTTP 2xx

Отправка кодов состояния 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.

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии