2013-03-13 15 views
9

別のリソースの一部を構成するリソースをリクエストするときに、正しい応答コード&メッセージのガイダンスを探しています。例えば親リソースが不足しているためのREST APIコード/メッセージ

、上のGETリクエスト:

ユーザ/ {ID}ユーザーが見つかりませんユーザーリソースのメッセージで、404を返す存在しない

。次の戻りはユーザーのリソースが見つからないべきか私の質問がある

、:

ユーザー/ {ID} /友人

私は現在、最初の例と同じコード/メッセージを返しますよ。友人のリソースに特に関連するメッセージを返すべきですか?親のリソースが見つからないことをAPIクライアントに認識させるためには、より大きなURIチェーンがあると個人的にはもっと役立つと思います。

答えて

6

この特定の例では、クライアントが存在しないユーザーのフレンドリクエストと単にフレンドのないユーザーのフレンドリクエストを区別できるようにするのがポイントであれば、最初のケースでは404を返し、2番目のケースでは空のセットで200を返します。

つまり、「none」は友人にとって有効な値です。ユーザーは存在しますが、(潜在的に空の)友人のリストは存在しません。そのため、親リソースに対して404を発行する際にあいまいさはありません。

+0

私はOPと同じことを熟考していますが、これは私の特定のユースケースの正しい方法と同じように感じます。あなたのケースにさらに追加するには、[Wikipedia](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)は、 '404'の後続のクライアントの要求が許可されていると述べています。これは正しいと思います。なぜなら、そのIDを持つユーザーはある時点で存在し始めますが、「400」は、要求がクライアントエラーのために悪いことを意味し、将来的には有効にならない可能性があるからです。 – djskinner

1

私は400 Bad Requestヘッダーを返すように誘惑され、応答の本文にエラーメッセージを配置します。残念ながら、このシナリオでは正解または間違った答えはないので、あなたとあなたのアプリケーションに最適なものを選んでください。

関連する問題