使用IActionResult作为Actions中的结果类型的优点

时间:2016-06-23 17:34:22

标签: asp.net-core asp.net-core-mvc

使用IActionResult作为WebApi控制器的返回类型而不是您想要返回的实际类型有什么优势或建议?

我见过的大多数示例都返回IActionResult,但是当我构建我的第一个网站时,我专门使用View Model类作为我的返回类型....现在我觉得我做错了! / p>

2 个答案:

答案 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等。