以下是ApiController
中的POST操作。
public HttpResponseMessage Post(ViewModel model)
{
if (!ModelState.IsValid)
{
var ResponseMessage = new HttpResponseMessage(HttpStatusCode.XXXXXX
return ResponseMessage;
}
if (!_service.Create(model))
{
var ResponseMessage=new HttpResponseMessage(HttpStatusCode.NotAcceptable);
return ResponseMessage;
}
else
{
return new HttpResponseMessage(HttpStatusCode.Created);
}
}
以这种方式启用服务器端模型验证是否可以?并且,我很确定如果一切正常,应该返回Created
。但是如果ModelState无效,或者发生了一些错误,我应该返回什么样的HttpStatusCode? p>
答案 0 :(得分:2)
通常它应该是400 - BadRequest
。
NotAcceptable
是服务器无法满足Accept标头的时候。
PreConditionFailed
是缓存验证条件失败的时候。例如,当且仅当ETag与请求中的值匹配时,如果PUT请求需要更新。
或者您可以发送自定义错误。由于它与Request有关,因此您需要使用4xx数字:
return new HttpResponseMessage((HttpStatusCode) 499)
{
ReasonPhrase = "Validation failed"
};