resource がPerson
あり、 person にネストされた resource があるとしSomeResource
ます。次のシナリオでは、どのステータス コードを返す必要がありますか? また、その理由は何ですか?
/Person/1/SomeResource (SomeResource does not exist)
/Person/1/SomeResource (Person does not exist)
404 は両方のシナリオで使用する必要があると思いますが、誰もが同意するわけではなく、その理由を知りたいです。Person
それは基礎となるリソースであり、そのリソースのSomeResource
単なる「プロパティ」でありSomeResource
、最初のシナリオでは何も返さないが、2 番目のシナリオでは 404 を返す必要があると主張できます。それはオプションかもしれないと思いますが、私はまだ 404 の方が好きです。私がまったく好きではないもう 1 つのシナリオは、エラーの説明を付けて 500 を返すことです。これは、私がディスカッションで聞いた代替手段でしたが、消費者は私が好きではない例外に対してプログラムする必要があります。私にとっての 500 は、何かがうまくいかず、それについては何もできないことを意味します。
問題は、404 を取得した場合、なぜ 404 を取得したのかがわからないという議論でした。それは、404 がPerson
存在しなかったためなのか、存在しなかったためになのかということSomeResource
です。
更新 1:
たぶん、次SomeResource
のような別のリソースに分割する必要があります
/SomeResource/1
のような応答を返します。これは、{data: {the data}, person: {person data}}
両方が欠落している場合にのみ 404 を返しますが、データが欠落している場合は、空のデータで 200 が返されます。
更新 2:
使用するステータス コードを把握したと思います。その時点で、決して実行してはならない要求、つまり悪い要求であると考えているため、その人が存在しない場合は 400 です。が存在しない場合は、存在していたがネストされたリソースが欠落していたSomeResource
ため、404 を使用します。Person