从webapi返回HttpResponseMessage和直接视图模型有什么区别?

时间:2014-02-21 23:39:59

标签: asp.net-web-api

我见过以两种不同的方式从web api方法返回的viewmodels。有什么区别,哪个是标准的?

         [HttpGet]
         public List<UserViewModel> Get()
         {
            //stuff here

             return usersViewModels;
         }


         [HttpGet]
         public HttpResponseMessage Get()
         {
             //stuff here

              return Request.CreateResponse(HttpStatusCode.OK, usersViewModels);
         }

2 个答案:

答案 0 :(得分:4)

基本上两者都会返回相同的数据,但使用HttpResponseMessage更灵活,并且您可以更改返回的Http响应的值。

例如,如果没有引发异常,则第一个方法返回具有固定HttpStatusCode.OK(200)的数据。在第二种方法中,您可以选择要返回的HttpStatusCode。也可以更改ContentType,ContentDisposition等HTTP标头

查看有关此主题http://soabubblog.wordpress.com/2013/07/07/web-api-httpresponsemessage/

的简明实用文章

此官方asp.net网站上的这个解释了Web API控制器可以返回的不同类型的结果,表明每个结果的优点 http://www.asp.net/web-api/overview/web-api-routing-and-actions/action-results

答案 1 :(得分:1)

每当实际操作状态代码(错误处理等)或标题时,我个人都会使用HttpResponseMessage。如果没有,我会返回常见对象。通过单元测试,我发现它更易读,更容易断言。

当您将错误处理实现为交叉问题(例如通过方面)并且您的Controller代码实际上并未实际处理时,这通常适用。在这种情况下,返回其他对象是安全的。