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

Sam*_*Sam 4 asp.net asp.net-web-api .net-core asp.net-core asp.net-core-webapi

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

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

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

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

[HttpGet]
public Task<IActionResult> Get()
{
   return Ok();
}
Run Code Online (Sandbox Code Playgroud)

Nko*_*osi 13

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

[HttpGet]
public IActionResult Get() {
   return Ok();
}
Run Code Online (Sandbox Code Playgroud)

调用时,上述操作将返回200 OK响应.

[HttpGet]
public IActionResult Get() {
   var model = SomeMethod();
   return Ok(model);
}
Run Code Online (Sandbox Code Playgroud)

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

[HttpGet]
public IActionResult Get() {
   var model = SomeMethod();
   return Json(model);
}
Run Code Online (Sandbox Code Playgroud)

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

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

Asp.Net核心行动结果解释