PMB*_*rud 24 c# asp.net-core-mvc asp.net-core
场景:在.net核心控制器上实现标准REST API/GET方法.
该文档指出OkObjectResult是一个状态为200的ObjectResult.这可以通过Ok(myResult)从ControllerBase继承的方法获得.我认为这是一种方便的方法.
但是,本教程没有使用这种方法 - 而是返回new ObjectResult(myResult)默认为状态200的方法.
这两种方法有什么区别吗?
Ral*_*ing 34
从技术上讲,这两种方法没有区别.
如果你想查看当时的代码,OkObjectResult你会发现它OkObjectResult是一个ObjectResult设置200状态代码,这是默认代码ObjectResult.
对我来说唯一的区别是代码的可读性以及您自己或您的团队偏好.这完全取决于命名以及您想要强调的意图.
return Ok(myResult); // gives emphasis on status, my personal favorite
return new OkObjectResult(myResult); // for me a little bit verbose and the same
// effect as Ok; but states we return an Object
return new ObjectResult(myResult); // gives emphasis of the content that is returned
Run Code Online (Sandbox Code Playgroud)
更新:原始问题中的两种方法+接受答案中的第三种方法现在已被直接返回对象所取代:
return myResult
Run Code Online (Sandbox Code Playgroud)
当前教程页面的相关示例和解释:
[HttpGet("{id}")]
public async Task<ActionResult<TodoItem>> GetTodoItem(long id)
{
var todoItem = await _context.TodoItems.FindAsync(id);
if (todoItem == null)
{
return NotFound();
}
return todoItem;
}
Run Code Online (Sandbox Code Playgroud)
GetTodoItems 和 GetTodoItem 方法的返回类型为 ActionResult<T> 类型。ASP.NET Core 自动将对象序列化为 JSON 并将 JSON 写入响应消息的正文中。假设没有未处理的异常,此返回类型的响应代码为 200。未处理的异常会转换为 5xx 错误。
| 归档时间: |
|
| 查看次数: |
15422 次 |
| 最近记录: |