我见过以两种不同的方式从web api方法返回的viewmodels。有什么区别,哪个是标准的?
[HttpGet]
public List<UserViewModel> Get()
{
//stuff here
return usersViewModels;
}
[HttpGet]
public HttpResponseMessage Get()
{
//stuff here
return Request.CreateResponse(HttpStatusCode.OK, usersViewModels);
}
答案 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代码实际上并未实际处理时,这通常适用。在这种情况下,返回其他对象是安全的。