[英].NET Web API HttpResponseMessage Pattern?
所以我看到Web API 2控制器返回HttpResponse
和实际对象。 例:
public HttpResponseMessage Get(string id)
{
var app = apps.Single(c => c.Id == id);
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ObjectContent<object>(app,
Configuration.Formatters.JsonFormatter)
};
}
要么
public Application Get(string id)
{
return apps.Single(c => c.Id == id);
}
我的问题是“正确”的方式? #2要短得多但是#1更好或#2自动做#1#?
两种情况下的响应都是相同的( HttpResponseMessage
)。
HttpResponseMessage
允许您使用HTTP协议(例如,通过Headers
属性)并统一您的返回类型。
返回CLR类型可以更具可读性,但是您可以放松使用不同状态代码返回不同类型的灵活性,除非您使用dynamic
或object
来抵消返回特定类型的目的。
就个人而言,我更喜欢使用IHttpActionResult
(在v2中添加)并在控制器操作上为预期的返回类型指定ResponseTypeAttribute
以提高可读性。
[HttpGet]
[ResponseType(typeof(Portfolio))]
public IHttpActionResult GetPortfolio([FromUri] long id)
{
// get portfolio
return Ok(portfolio);
}
您可以使用默认的IHttpActionResult
实现轻松地操作响应消息(以RESTful方式)(请参阅上面的OkResult
)。 避免自己构造HttpResponseMessage
也可以保持代码清洁。 这是关于IHttpActionResult
的官方文章, 这是关于HttpResponseMessage
和IHttpActionResult
一个有趣的SO对话。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.