3

这是我的 POST 操作ApiController

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应该返回 a 。但是如果 ModelState 无效,或者发生错误,我应该返回什么样的 HttpStatusCode 呢?

4

1 回答 1

2

通常它应该是 400 - BadRequest

NotAcceptable是当服务器无法满足 Accept 标头时。

PreConditionFailed是缓存验证条件失败的时候。例如,如果 PUT 请求需要更新,当且仅当 ETag 匹配请求中的值。


或者,您可以发送自定义错误。由于和Request有关,所以需要使用4xx号:

return new HttpResponseMessage((HttpStatusCode) 499) 
     {
          ReasonPhrase = "Validation failed"
     };
于 2012-05-22T19:49:55.190 回答