我一直的WebAPI开发,并已转移到WebApi2,微软又推出了新的IHttpActionResult
接口,这似乎建议在返回HttpResponseMessage
使用。我很困惑这个新界面的优点。它似乎主要只是提供一个更简单的方法来创建HttpResponseMessage
。为什么我应该使用IHttpActionResult而不是HttpResponseMessage?
我会做的说法,这是“抽象的抽象的缘故”。我错过了什么吗?除了可能保存一行代码之外,使用这个新界面的真实世界优势是什么?
老办法(的WebAPI):
public HttpResponseMessage Delete(int id)
{
var status = _Repository.DeleteCustomer(id);
if (status)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
else
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
}
新途径(WebApi2):
public IHttpActionResult Delete(int id)
{
var status = _Repository.DeleteCustomer(id);
if (status)
{
//return new HttpResponseMessage(HttpStatusCode.OK);
return Ok();
}
else
{
//throw new HttpResponseException(HttpStatusCode.NotFound);
return NotFound();
}
}
花了我一会儿,找出ResponseMessage现在是ResponseMessageResult。最近它可能已经改名了吗?附:你也错过了答案中的新关键字,并非常感谢你的建议:) –
@IlyaChernomordik'ResponseMessage'和'ResponseMessageResult'是两个不同的东西。 ResponseMessage()是你的控制器应该继承的ApiController的一个*方法,因此只是一个方法调用。所以在那里不需要'new'关键字。你可能不是从'ApiController'继承,或者你在一个静态方法中。 'ResponseMessageResult'是'ResponseMessage()'的返回类型。 – AaronLS
@IlyaChernomordik我可以写出'response = base.ResponseMessage(responseMsg)'使它更清楚它是基类的一个方法ApiController – AaronLS