[解決済み] REST APIサービスが検証に失敗した場合に返すべき適切なHTTPステータスコードは何ですか?
質問
において、検証に失敗すると401 Unauthorizedが返されます。 Django / ピストン ベースのREST APIアプリケーションです。 を見てきました。 HTTPステータスコードレジストリ 検証失敗のための適切なコードであることを確信できないのですが、皆さんはどう思われますか?
- 400 Bad Request
- 401 認証されていません
- 403 Forbidden
- 405 メソッドが許可されていない
- 406 受け入れ不可
- 412 前提条件の不成立
- 417 期待外れ
- 422 処理不能なエンティティ
- 424 依存関係の失敗
更新情報 : 上記のquot;Validation failure"は、アプリケーションレベルのデータ検証の失敗を意味します。すなわち、不正に指定された日付時間、偽の電子メールアドレスなどです。
解決方法は?
検証失敗の場合、HTTP 400 (Bad Request) を使用します。 例えば、URIがISO-8601の日付を持つはずなのに、それが間違った形式であったり、2月31日を指していたりした場合、HTTP 400を返すことになります。 また、エンティティ・ボディに整形式のXMLを期待していたのに、パースに失敗した場合も同様です。
(1/2016): 過去5年間で ウェブDAV のより具体的な HTTP 422 (Unprocessable Entity) は、HTTP 400 の非常に合理的な代替手段になっています。 例えば JSON API . しかし、HTTP 422 には ではなく は、HTTP 1.1に採用されました。 RFC-7231 .
リチャードソンとルビーの RESTfulなウェブサービス には、さまざまなHTTPレスポンスコードをいつ使うかについて、とても役に立つ付録があります。 彼らはこう言っています。
<ブロッククオート
400 ("不正な要求")
重要度 高い。
これは、他の4xxエラーコードが適切でない場合に使用される、一般的なクライアント側のエラーステータスである。これは、クライアントが表現形式を
PUTまたはPOSTリクエストで、その表現は正しい形式であるが、意味をなさない。
という意味です。(p. 381)
とします。
401(「不正」)。
重要度 高い。
クライアントが適切な認証情報を提供せずに、保護されたリソースを操作しようとしました。間違った認証情報を提供したか、まったく提供しなかった可能性があります。 認証情報は、ユーザー名とパスワード、APIキー、または認証キーである可能性があります。 トークン-当該サービスが期待しているものすべて。クライアントが URIをリクエストし、401を受け取ることで、どのような種類のクレデンシャルを送信すべきかを知ることができます。 で、どのような形式か。[...]
関連
-
[解決済み] reactとmaterial-uiによるフォームバリデーション
-
[解決済み] IETFが定義するメールアドレスの実際の最小の長さはどのくらいですか?
-
[解決済み] updateとdeleteのHTTPステータスコード?
-
[解決済み] 有効なメールアドレスの最大長を教えてください。
-
[解決済み] リソースが既に存在する場合の POST に対する HTTP レスポンスコード
-
[解決済み] 検証失敗または重複が無効な場合のREST HTTPステータスコード
-
[解決済み] HTML5 form 要素の検証を無効にする
-
[解決済み] REST APIサービスが検証に失敗した場合に返すべき適切なHTTPステータスコードは何ですか?
-
[解決済み] [Solved] リクエストに必須パラメータがない場合、どのようなHTTPステータスレスポンスコードを使用すればよいですか?
-
[解決済み】JAX-RS - JSONとHTTPステータスコードを一緒に返すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Wekaにおけるクロスバリデーション
-
[解決済み] JAX-WSによるサーバーサイドのスキーマ検証
-
[解決済み] reactとmaterial-uiによるフォームバリデーション
-
[解決済み] IETFが定義するメールアドレスの実際の最小の長さはどのくらいですか?
-
[解決済み] 有効なメールアドレスの最大長を教えてください。
-
[解決済み] 検証失敗または重複が無効な場合のREST HTTPステータスコード
-
[解決済み] HTML5 form 要素の検証を無効にする
-
[解決済み] Angularフォームフィールドを手動で無効に設定するにはどうすればよいですか?
-
[解決済み】Hibernate Validator(JSR303)でクロスフィールド検証を行う。)
-
[解決済み】Cookieベースの認証はどのように機能するのですか?