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

时间:2017-10-19 14:32:56

标签: asp.net asp.net-web-api asp.net-core

在返回HTTP status codesJSON结果的Web API中使用的最佳选项是什么?

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

我有以下简单的方法给出了一个错误:

  

无法隐式转换类型Microsoft.AspNetCore.Mvc.OkObjectResult   to System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.IActionResult

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

1 个答案:

答案 0 :(得分:10)

返回最符合请求需求的对象。至于动作的方法定义,用IActionResult定义它,以允许使用抽象的灵活性与紧密耦合的具体结果相对应。

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

上述操作在调用时将返回200 OK响应。

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

以上内容将返回200 OK响应内容。区别在于它允许内容协商,因为它没有特别限制为JSON。

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

以上只会返回Json内容类型。

关于这个主题的非常好的文章

Asp.Net Core Action Results Explained