1. ホーム
  2. validation

[解決済み] REST APIサービスが検証に失敗した場合に返すべき適切なHTTPステータスコードは何ですか?

2022-03-23 08:52:05

質問

において、検証に失敗すると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を受け取ることで、どのような種類のクレデンシャルを送信すべきかを知ることができます。 で、どのような形式か。[...]