所以我看到了 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)
};
}
or
public Application Get(string id)
{
return apps.Single(c => c.Id == id);
}
我的问题是“正确”的方式是什么? #2 短得多,但是执行 #1 更好还是 #2 自动执行 #1 ...?
See this https://stackoverflow.com/questions/12633174/mvc-4-web-api-action-return-types-vs-httpresponsemessage and this https://stackoverflow.com/questions/15910867/asp-net-webapi-controller-return-typed-entity-or-httpresponsemessage所以问题。
响应将是相同的(HttpResponseMessage
)在这两种情况下。
HttpResponseMessage
允许您使用 HTTP 协议(例如,通过Headers
属性)并统一您的返回类型。
返回 CLR 类型可能更具可读性,但您会失去返回具有不同状态代码的不同类型的灵活性,除非您使用dynamic
or object
这违背了返回特定类型的目的。
就我个人而言,我更喜欢使用IHttpActionResult
(在 v2 中添加)并指定ResponseTypeAttribute
关于预期返回类型的控制器操作以提高可读性。
[HttpGet]
[ResponseType(typeof(Portfolio))]
public IHttpActionResult GetPortfolio([FromUri] long id)
{
// get portfolio
return Ok(portfolio);
}
您可以使用默认值轻松操作响应消息(以 RESTful 方式)IHttpActionResult
实现(参见OkResult
多于)。避免建造HttpResponseMessage
你自己也保持代码干净。Here http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/action-results是一篇关于IHttpActionResult
and here https://stackoverflow.com/questions/21758615/why-should-i-use-ihttpactionresult-instead-of-httpresponsemessage是一个有趣的对话HttpResponseMessage
vs IHttpActionResult
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)