我有以下Api Controller
:
[HttpPost]
public User Create(User user)
{
User user = _domain.CreateUser(user);
//set location header to /api/users/{id}
//set status code to 201
//return the created user
}
似乎我们必须依赖Request.CreateResponse(..)
并更改控制器的签名才能返回IHttpActionResult
。
我不想更改方法签名,因为它对于文档目的非常有用。我可以使用Location
添加HttpContext.Current.Response...
标头,但无法设置状态代码。
有人对此有任何更好的想法吗?
答案 0 :(得分:2)
因为您在void,HttpResponseMessage和IHttpActionResult之外使用自定义(其他)返回类型 - 所以更难指定状态代码。请参阅Action Results in Web API 2。
来自Exception Handling in Web API.如果您想坚持不修改返回类型,那么您可以执行此操作来设置状态代码:
[HttpPost]
public User Create(User user)
{
User user = _domain.CreateUser(user);
//set location header to /api/users/{id}
//set status code to 201
if (user != null)
{
//return the created user
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.Created, user);
}
else
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.InternalServerError));
}
}