4xx
クライアントから提供された情報が問題の原因であるため、これは間違いなくエラーです。
セマンティックな性質の問題を扱っているため、 HTTP 1.1 の WebDAV422
が最適な応答コードです。
422 Unprocessable Entity (WebDAV)
422 (Unprocessable Entity)
ステータス コードは、サーバーがリクエスト エンティティのコンテンツ タイプを理解していることを意味します。したがって、415 (Unsupported Media Type)
ステータス コードは不適切です。リクエスト エンティティの構文は正しいため、400 (Bad Request)
ステータス コードは不適切ですが、含まれている命令を処理できませんでした。たとえば、このエラー状態は、XML 要求本文に整形式 (つまり、構文的に正しい) が含まれているが、意味的に誤った XML 命令が含まれている場合に発生する可能性があります。
もちろん、クライアントを暗闇の中に放置しないでください。エラーが発生した理由を応答本文で必ず説明してください。
次に、他のコードではない理由についていくつかの議論を行います。
`400 Bad Request`: *構文が正しくないため、サーバーがリクエストを理解できませんでした。クライアントは、変更せずにリクエストを繰り返すべきではありません。* - 構文は問題ありません (リクエストは整形式です)。エラーはセマンティックです (会社が存在しません)。さらに、クライアントは別の時点で (会社を追加した後) **変更なしで**リクエストを繰り返すことができ、それが機能する可能性があります。だから、400ではない。
`403 Forbidden` *サーバーはリクエストを理解しましたが、それを拒否しています。承認は役に立たず、要求を繰り返すべきではありません*: これは通常、クライアントが認証されているが、要求されたリソースへのアクセス許可 (書き込み、読み取り、またはその他の要件) がない場合に発行されます。403でもありません。
`404 Not Found` *サーバーは Request-URI に一致するものを見つけられませんでした*: エラーはユーザーである **Request-URI** に関するものであることに注意してください。この応答は、会社ではなく **ユーザー** (URI 内のユーザー) が存在しない場合に送信する必要があります。
そして他の人:
`401 Unauthorized` *リクエストにはユーザー認証が必要です*: ここで議論する必要はありません。
`402 Payment Required` *このコードは将来の使用のために予約されています*: どちらもここにはありません。
`405 Method Not Allowed`: HTTP メソッド (`GET`、`PUT` など) に関するものではありません。
`406 Not Acceptable`: これは受け入れヘッダーに関係しています。
`407 Proxy Authentication Required`: プロキシ関連。
`408 Request Timeout`: 明らかに違います。
`409 Conflict`: *リソースの現在の状態と競合するため、リクエストを完了できませんでした。* 現在の (以前に保存された) リソース (ユーザーの会社) はサーバーで問題ありません。新しい会社は常に受け入れられます。新しい会社は常に現在の会社を上書きするため、新しい会社と現在の会社の間に競合はありません。
`410 Gone`: *要求されたリソースはサーバーで利用できなくなり、転送先アドレスも不明です。* これも関係ありません。
`411 Length Required`: `Content-Length`ヘッダについてです。
`412 Precondition Failed`: リクエスト ヘッダー フィールドについて。
`413 Request Entity Too Large`: エンティティのサイズとは関係ありません。
`414 Request-URI Too Long`: URI のサイズでもありません。
`415 Unsupported Media Type`: リクエストのエンティティは問題ありません (サーバーは JSON を認識しています)。
`416 Requested Range Not Satisfiable`:`Range`リクエストヘッダーについて。
`417 Expectation Failed`: `Expect` リクエスト ヘッダーについて。
`423 Locked (WebDAV)` *423 (Locked) ステータス コードは、メソッドのソースまたは宛先リソースがロックされていることを意味します*: ここでは何もロックされていません。
`424 Failed Dependency (WebDAV)` *424 (Failed Dependency) ステータス コードは、要求されたアクションが別のアクションに依存しており、そのアクションが失敗したため、リソースに対してメソッドを実行できなかったことを意味します*:現在のコンテキスト。