以下是我刚用脚手架创建的一些新代码:
[ResponseType(typeof(Exam))]
public async Task<IHttpActionResult> GetExam(int id)
{
...
return Ok(exam);
}
以前我有这样的代码:
public HttpResponseMessage GetExam(int id)
{
...
return Request.CreateResponse(HttpStatusCode.OK, exam);
}
有人可以评论这些变化背后的内容。为什么现在建议使用返回类型“Ok”,这与编码HttpResponseMessage有什么不同?我还没有找到关于此的任何文档,特别是我想知道ResponseType正在做什么?任何建议都将不胜感激。
答案 0 :(得分:3)
在Web API版本1中,您可以通过返回值返回HTTP 200,或者您必须构造HttpResponseMessage
以返回任何其他内容。
在Web API 2中,添加了IHttpActionResult
以及关联的Ok()
,BadRequest()
,Created()
等ApiController
方法,以简化许多您只是简单的情况想要用不同的状态代码回复。在幕后,Web API调用IHttpActionResult.ExecuteAsync()
将其转换为HttpResponseMessage
。
有关详细信息,请参阅:Action Results in Web API 2
对于ResponseType
属性,它主要指定返回IHttpActionResult
和HttpResponseMessage
的操作中的返回类型,以便Web API可以生成帮助文档。以前,这必须通过config.SetActualResponseType()
完成。