使用IActionResult
作为WebApi控制器的返回类型而不是您想要返回的实际类型有什么优势或建议?
我见过的大多数示例都返回IActionResult
,但是当我构建我的第一个网站时,我专门使用View Model类作为我的返回类型....现在我觉得我做错了! / p>
答案 0 :(得分:16)
主要优点是您可以返回错误/状态代码或重定向/资源网址。
例如:
public IActionResult Get(integer id)
{
var user = db.Users.Where(u => u.UserId = id).FirstOrDefault();
if(user == null)
{
// Returns HttpCode 404
return NotFound();
}
// returns HttpCode 200
return ObjectOk(user);
}
或
public IActionResult Create(User user)
{
if(!ModelState.IsValid)
{
// returns HttpCode 400
return BadRequest(ModelState);
}
db.Users.Add(user);
db.SaveChanges();
// returns HttpCode 201
return CreatedAtActionResult("User", "Get", new { id = user.Id} );
}
答案 1 :(得分:1)
主要优点是您可以使用模拟框架轻松测试代码。
在构建控制器时,您也可以轻松更改返回对象。 IActionResult是一个接口,有许多实现,如JsonResult,ViewResult,FileResult等。