ASP.NET Core предлагает следующие параметры для типов возвращаемых действий контроллера Web API:
Specific type (T)
IActionResult
ActionResult<T>
Специальный тип (T):
Самое простое действие возвращает примитивный или сложный тип данных (например, строку или пользовательский тип объекта).Без известных условий для защиты во время выполнения действия может быть достаточно возврата определенного типа.Предыдущее действие не принимает параметров, поэтому проверка ограничений параметров не требуется.
Когда в действии необходимо учитывать известные условия, вводятся несколько путей возврата.В таком случае обычно смешивают тип возврата ActionResult
с простым или сложным типом возврата.Либо IActionResult
, либо ActionResult<T>
необходимы для выполнения этого типа действия.
Тип IActionResult:
Тип возврата IActionResult
подходит, если в возвращении возможно несколько типов возврата ActionResult
.действие.Типы ActionResult
представляют различные коды состояния HTTP.Некоторые распространенные типы возврата, попадающие в эту категорию: BadRequestResult (400)
, NotFoundResult (404)
и OkObjectResult(200)
.
ActionResult<T>
type:
ASP.NET Core 2.1 добавляет новые соглашения о программировании, которые облегчают создание чистых и описательных веб-API.ActionResult<T>
- это новый тип, добавленный для того, чтобы приложение могло возвращать либо тип ответа, либо любой другой результат действия (аналогично IActionResult
), в то же время указывая тип ответа.
ActionResult<T>
более конкретно относится к веб-API в ASP.NET Core> = 2,1 и ActionResult<T>
предлагает следующие преимущества по сравнению с типом IActionResult
:
- Свойство Type атрибута
[ProducesResponseType]
может быть исключено.Например, [ProducesResponseType(200, Type = typeof(Product))]
упрощается до [ProducesResponseType(200)]
.Ожидаемый тип возврата действия вместо этого выводится из T
in ActionResult<T>
. - Неявные операторы приведения поддерживают преобразование как
T
, так и ActionResult
в ActionResult<T>
.T
преобразуется в ObjectResult
, что означает, что возврат нового ObjectResult(T);
упрощен до return T;
.
Для получения более подробной информации: Типы возвращаемых действий контроллера в ASP.NET Core Web API