409: Conflict
あなたが持っているのは資源状態の違反なので、私は一緒に行きます。
405: Method Not Allowed
また動作します。を使用する場合は、サポートされているメソッドを示すヘッダー405
を送信する必要がAllow
あります。サポートされているメソッドは、リソースの状態によって異なります。私の意見では、この応答コードは読み取り専用リソース、削除できないリソースなどに適していますが、この投稿に対するDarrelのコメントは有効です。仕様があいまいです:
Request-Lineで指定されたメソッドは、Request-URIで識別されたリソースには許可されていません。応答には、要求されたリソースの有効なメソッドのリストを含むAllowヘッダーを含める必要があります。
いずれの場合も、クライアントがエラーの原因を理解できるように、応答本文に情報を提供する必要があります。
上記の他の2つの方法について:
403: Forbidden
リソースを変更するための適切な権限がない場合、つまり、そのリソースを削除するために管理者である必要があり、そうでない場合に使用する必要があります。
412: Precondition Failed
主に、前提条件がリクエストヘッダーで明示的に指定されている条件付きリクエストに使用されます。たとえば、If-Match
ヘッダーが有効な場合にのみ実行する必要がある条件付きPUTリクエストを作成できます。リクエストヘッダーに何も指定しない場合でも、412ではなく409を選択します。412の仕様は次のとおりです。
1つ以上のrequest-headerフィールドで指定された前提条件は、サーバーでテストされたときにfalseと評価されました。この応答コードにより、クライアントは現在のリソースメタ情報(ヘッダーフィールドデータ)に前提条件を設定できるため、要求されたメソッドが意図したもの以外のリソースに適用されるのを防ぐことができます。