StatusCodeResult or ResponseMessageResult

本文关键字:ResponseMessageResult or StatusCodeResult | 更新日期: 2023-09-27 18:00:48

我看到一个响应从Web API以两种不同的方式发送。

return ResponseMessage(new HttpResponseMessage(HttpStatusCode.UnsupportedMediaType));

return StatusCode(HttpStatusCode.UnsupportedMediaType);

两者最终都会向呼叫者发送一个415。我已经查看了这两个结果类的MSDN文档,但仍然不知道有什么区别,也不知道为什么要选择其中一个。

StatusCodeResult or ResponseMessageResult

使用StatusCodeResult来简化单元可测试性。

示例(以xUnit为单位(:

var result = Assert.IsType<StatusCodeResult>(valuesController.Blah(data));
Assert.Equal(415, result.StatusCode);

回复评论:我更喜欢下面这样的东西:

public IHttpActionResult Get(int id)
{
    if(id == 10)
    {
        return StatusCode(HttpStatusCode.NotFound);
    }
    return Ok("Some value");
}

而不是:

public IHttpActionResult Get(int id)
{
    if(id == 10)
    {
        return ResponseMessage(Request.CreateResponse(HttpStatusCode.NotFound));
    }
    return Ok("Some value");
}