下面是我刚刚用脚手架创建的一些新代码:
[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在做什么?任何建议都将不胜感激。
在Web API版本1中,您可以通过返回值来返回HTTP 200,也可以构建HttpResponseMessage
来返回其他任何内容。
在Web API 2中,添加了IHttpActionResult
和相关的Ok()
、BadRequest()
、Created()
等ApiController
方法,以简化您只想使用不同状态代码进行响应的许多情况。在后台,Web API调用IHttpActionResult.ExecuteAsync()
将其转换为HttpResponseMessage
。
有关更多详细信息,请参阅:Web API 2 中的操作结果
至于ResponseType
属性,它主要用于在返回IHttpActionResult
和HttpResponseMessage
的操作中指定返回类型,以便Web API可以生成帮助文档。以前,这必须通过config.SetActualResponseType()
来完成。
更多详细信息:ResponseTypeAttribute