「.NET Web API HttpResponseMessage Pattern?」
「.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 ObjectContentadmin 更改状态以发布 2023年5月21日
两种情况下返回的响应都是相同的 (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
实现(请参见上文的OkResult
)轻松操纵响应消息(以RESTful的方式)。自己避免构建HttpResponseMessage
还可以保持代码简洁。这里是有关IHttpActionResult
的官方文章,这里是关于HttpResponseMessage
与IHttpActionResult
的有趣讨论。