2010-12-02 24 views
11

私たちのチームはRESTFulアプリケーションを開発しています...我々は "ベストプラクティス"アプローチについて議論しています。REST:404 HTTPステータスコードのマッピング

フィルタのようなクエリに対して404状態コード応答が返されるべきですか?私のGETのURLは

.../1 /サービス/のstartsWithは/ a.json

と言うと、それは私のデータベース内で始まるすべての値を返す...しかし、何「」の値が見つからない場合私はちょうど空のjson文字列で状態コード200を返す必要がありますか?またはステータスコード404。

ありがとうございました!

答えて

15

thisの質問を参照してください。私の回答の更新で、私はあなたの問題に対処します。 は、具体的に、このビット、

私はリターン404が取得され リソースが何であるかに依存し にするかどうかの答えだと思います。 それは 検索の表現ですまたは の製品ですか?これを知るには、実際に がURLに をもたらしたリンク関係を見る必要があります。

URLが 商品の返品を返すと思われる場合は、 が存在しない場合、404 が返されます。 URLが検索 結果を返す場合、それは404

を返すべきではありません最終的な結果は決定 要因ではないようにどのようなURL が見えることです。それは言いましたが、クエリ文字列を使用するのは という規則です。 検索結果を返すようにすると 40435を返すことを望まないときは、そのスタイルのURLを として使用するのは直感的です。

+5

はい、私はDarrelに同意します。単に、「結果がありません」は有効な検索結果です。リソースは存在し、表現は単に「空」です。したがって、404は正当化されません。存在しない識別子(/ customers/123)で具体的なリソースを要求すると404が返されます。これはクエリではなく、ポインタの「逆参照」です。 –

3

「No Content」を意味する204コードを返す方が賢明かもしれません。これは、204ステータスがどんなドキュメントコンテンツも持つことができず、レスポンスを解析する代わりにコードを検出できるので、やや効率的です。

関連する問題