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
来简化单元可测试性。
示例(以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");
}