Here is the POST action in my 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);
}
}
Is it okay to enable server-side model validation in this way? And, I am pretty sure a Created should be returned if everything is fine. But what kind of HttpStatusCode should I return if the ModelState is invalid, or if some error occurs?
Normally it should be 400 –
BadRequest.NotAcceptableis when Accept headers cannot be satisfied by the server.PreConditionFailedis when caching validation conditions fails. For example, if a PUT request requires update if and only if ETag match value in the request.Alternatively you may send custom error. Since it is to do with Request, you need to use 4xx numbers: