我想知道在我的ApiController中使用HttpResponseMessage作为返回类型的好处是什么?与直接返回键入的实体或集合相比。asp.net webapi控制器,返回类型实体或HttpResponseMessage
我们正在努力确定一个实践,使我们正在进行的项目保持一致。
我想知道在我的ApiController中使用HttpResponseMessage作为返回类型的好处是什么?与直接返回键入的实体或集合相比。asp.net webapi控制器,返回类型实体或HttpResponseMessage
我们正在努力确定一个实践,使我们正在进行的项目保持一致。
返回HttpResponseMessage
当您尝试将控制器层用作HTTP协议和内部.Net服务之间的转换时非常有用。它允许直接控制HTTP有效负载和标题。它可以很容易地返回202,204,304,303响应。它可以很容易地设置缓存标题。您可以明确控制响应的媒体类型。
通过返回一个对象,可以有效地为您的架构添加一个“什么都不做”的层。考虑......
public Foo Get(int id) {
return _fooRepository.GetFoo(id)
}
这种方法的目的是什么?它增加了什么价值?至少在MVC的土地上,控制者具有匹配模型和视图的角色。
当您从APIController返回对象时,必须使用一组特定于Web API/MVC的抽象间接影响HTTPResponseMessage,并且在HTTP世界中没有相应的概念。格式化程序,ActionFilters,ModelBinders和HttpResponseException都是基础设施,旨在允许框架在幕后处理HTTP请求和响应消息。
直接返回HttpResponseMessage要求您的控制器方法执行必要的工作以返回所需的HTTP消息。
我不相信它会增加您的应用程序的复杂性,它只会使正在发生的事情变得可见。
问题的关键在于是否要将Web API用作“通过HTTP进行远程对象”框架(在这种情况下,我还会看看ServiceStack),还是希望利用HTTP作为应用程序协议。
我完全同意,也许为了分离担心为什么没有服务层(强类型方法)和web服务层(ASP.NET WEB API),所以服务层可以很容易地被Winform,WPF,Console使用并测试项目并通过ASPNET WebAPi作为web服务公开 – 2013-12-03 13:57:26