ASP.NET Core API 中的 IActionResult 与 ObjectResult 与 JsonResult

IActionResult vs ObjectResult vs JsonResult in ASP.NET Core API

在 Web API 中使用什么是 return 同时 HTTP status codesJSON 结果的最佳选择?

我一直使用 IActionResult,但它始终是带有 Web API 的 Web 应用程序。这次 仅 Web API.

我有以下简单的方法,它给我一个错误:

Cannot implicitly convert type Microsoft.AspNetCore.Mvc.OkObjectResult to System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.IActionResult

[HttpGet]
public Task<IActionResult> Get()
{
   return Ok();
}

Return最符合请求需要的对象。至于动作的方法定义,用 IActionResult 定义它以允许灵活地使用抽象而不是紧密耦合的具体化。

[HttpGet]
public IActionResult Get() {
   return Ok();
}

以上操作在调用时会return 200 OK 响应。

[HttpGet]
public IActionResult Get() {
   var model = SomeMethod();
   return Ok(model);
}

上面的内容会 return 200 OK 响应。不同之处在于它允许内容协商,因为它没有具体限制为 JSON.

[HttpGet]
public IActionResult Get() {
   var model = SomeMethod();
   return Json(model);
}

以上只会return Json内容类型。

一篇关于该主题的非常好的文章

Asp.Net Core Action Results Explained