回答:
404 NOT FOUND
このIDのリソースが存在しないため、適切な応答のようです。理解することは非常に明確であり、a/{id}
が呼び出された場合も同じ応答を期待しています。
409 CONFLICT
あなたの例では親リソースが見つからなかったときに409を返すので、私には良い選択ではないようです:)。
しかし、最も重要なことはAPIで一貫していることを覚えています
id
)は404です。ただし、フォルダーが本文で渡された場合、これは他の何でもかまいません(412、422 ... "検証に失敗しました:フォルダーは存在しない")。質問して話し合うのは良い質問です。
@Dherikの答えに加えて。
URIは識別子なので、(/a/{id}/b
は識別子)を覚えておく必要があります。URIは、 WWWのために意味がない、ので、HTTPクライアントのためです。
404が正解です。本質的に、サーバーは応答しています
そのようなIDのリソースは見つかりませんでした。リソースが見つかりません 1
欠落しているリソースが親か子かは問題ではありません。
開発者は、URIに階層とパスを表示しますが、HTTPクライアントは表示しません。つまり、HTTPはHTTPクライアントによってのみ解釈されることを意図されており、人間(開発者、エンドユーザーなど)によって解釈されることはありません。
疑問がある場合は、あなた(人間)にとって意味のあるコードを尋ねないでください。質問してください。HTTPクライアントにとって意味のあるコードは何ですか。HTTPクライアントをどのように動作させますか?
どうして?一部のステータスコードにより、これらのクライアントは特定の操作を実行するためです。たとえば、302。通常、このコードにより、Webブラウザーは応答ヘッダーで通知された特定の場所(URI)にリダイレクトします。
これはあなたのケースではないかもしれませんが、注意することが重要です。最終的に、HTTPステータスコードはHTTPクライアントに送信されます。私たちのアプリケーションではありません。人にではない。
1:409がナビゲーションエラーとして実装されることはほとんどありません。通常、リモート操作(削除、更新、新規など)の実行が含まれます。しかし、URIは存在するはずです。それ以外の場合は、404が優先されます