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検証条件のキャッシュが失敗した場合です。たとえば、ETag が要求の値と一致する場合にのみ、PUT 要求が更新を必要とする場合です。


または、カスタム エラーを送信することもできます。リクエストに関係するため、4xx 番号を使用する必要があります。

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