以下のように私は、RESTリソースを持っている場合:REST 404対400.どちらを使用しますか?
し、提供はcustomerIdが存在しない場合をGET、私のサーバーが404(見つかりません返す必要があります)または400(Bad Request)?がhttp://www.example.com/customers/ {はcustomerId} /受注
以下のように私は、RESTリソースを持っている場合:REST 404対400.どちらを使用しますか?
し、提供はcustomerIdが存在しない場合をGET、私のサーバーが404(見つかりません返す必要があります)または400(Bad Request)?がhttp://www.example.com/customers/ {はcustomerId} /受注
私は、リクエストが有効だったので、それは404ステータスでなければならないと信じていますが、customerID
は見つかりませんでした。
これにはいくつかの方法があります。
{customerId}をタイプしていて、それが完全に偽であることがわかっている場合は、400バッドリクエストが意味があります。
しかし、{customerId}が有効な形式とタイプであるにもかかわらず存在しない場合は、204 - No Contentを提案します。私の意見では、そのようなケースは、アクションが見つかったので、適切に404ではありません。
ユーザーが有効なパスを提供すると仮定すると、customerId 123456が存在しない場合でも、呼び出しは正常に実行され、データは返されません。したがって204の内容はありません。
ステータスが200の範囲も「成功」と見なされるため、正しい形式の{customerId}の呼び出しが成功したことを確認できます。そのIdが有効かどうかを判断することは、たぶん別のサービスの責任です。
コンテンツソースが見つかってコンテンツがない場合(標準ヘッダーを超えるゼロバイト)のコンテンツのみを返すようにしてください。コンテンツソースが見つからない場合(そのIDのユーザーはいない)、404が正しい応答です。 – Mike