使用 WebAPI 2 在 HttpResponseMessage 和 Task 之间发回的内容是否有区别<IHttpActionResult>?



下面是我刚刚用脚手架创建的一些新代码:

    [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属性,它主要用于在返回IHttpActionResultHttpResponseMessage的操作中指定返回类型,以便Web API可以生成帮助文档。以前,这必须通过config.SetActualResponseType()来完成。

更多详细信息:ResponseTypeAttribute

相关内容

最新更新