amc*_*dnl 6 .net asp.net asp.net-web-api
所以我看到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)
};
}
Run Code Online (Sandbox Code Playgroud)
要么
public Application Get(string id)
{
return apps.Single(c => c.Id == id);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是"正确"的方式?#2要短得多但是#1更好或#2自动做#1#?
Nik*_*dze 12
HttpResponseMessage两种情况下的响应都是相同的().
HttpResponseMessage允许您使用HTTP协议(例如,通过Headers属性)并统一您的返回类型.
返回CLR类型可以更具可读性,但是您可以灵活地返回具有不同状态代码的不同类型,除非您使用dynamic或object违背了返回特定类型的目的.
就个人而言,我更喜欢使用IHttpActionResult(在v2中添加)并ResponseTypeAttribute为预期的返回类型指定on controller操作以提高可读性.
[HttpGet]
[ResponseType(typeof(Portfolio))]
public IHttpActionResult GetPortfolio([FromUri] long id)
{
// get portfolio
return Ok(portfolio);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用默认IHttpActionResult实现轻松地操作响应消息(以RESTful方式)(参见OkResult上文).避免HttpResponseMessage自己构建也可以保持代码清洁.这是一篇关于vs 的官方文章IHttpActionResult,这里有一个有趣的SO对话.HttpResponseMessageIHttpActionResult
| 归档时间: |
|
| 查看次数: |
7906 次 |
| 最近记录: |