1. ホーム
  2. validation

[解決済み】入力に誤りがあった場合のHTTPステータスコードについて

2022-04-11 23:10:46

質問

200 (everything OK)ではなく、入力にエラーがある場合の最適なHTTPレスポンスコードは何ですか?

例えば、あるデータをサーバーに送信したところ、データが間違っているとの応答が返ってきたとします。

を使って 500 は、サーバーイシューのように見える

を使って 200 警告やエラーのレスポンステキストを含むのは良くない (キャッシュを許可して何でもOKというわけではない)

を使って 204 で、何も返さないというのもいいかもしれません(でも、よくサポートされている?)

を使って 404 は、要求されたパス (スクリプト) が適切な場所にある場合は、間違っています。

どうすればいいですか?

私たちもAPIを作るときに同じような悩みを抱えていました。私たちは、HTTPステータスコードに相当する InvalidArgumentException . 下記のソース記事を読んで、結局は 422 Unprocessable Entity という記述があります。

422 (Unprocessable Entity) ステータスコードは、サーバーがリクエストエンティティのコンテンツタイプを理解し (従って 415 (Unsupported Media Type) ステータスコードは不適切)、リクエストエンティティの構文が正しい (従って 400 (Bad Request) ステータスコードは不適切)が、含まれる命令を処理できないことを意味します。たとえば、このエラー状態は、XMLリクエストボディが整形式(すなわち、構文的に正しい)だが、意味的には誤ったXML命令を含む場合に発生する可能性がある。

のソースです。 https://www.bennadel.com/blog/2434-http-status-codes-for-invalid-data-400-vs-422.htm