2013-03-03 23 views
8

Content-Range's itemsヘッダーを使用して、RESTfulインターフェイスで空コレクションを処理するにはどうすればよいですか?空コレクションとHTTPヘッダーContent-Range

例えば、42レコードを持つ要求Range: items=0-41はすべてを返し、応答ヘッダーはContent-Range: items 0-41/42となります。

ただし、レコードがない場合、Content-Rangeヘッダーはどのように扱うことができますか?助けてくれてありがとう。

編集:

私が意味する、空のコレクションを返し、サーバーはxyが0と異なる場合がしかし、一つでしょう価値あるContent-Range: items x-y/0を返すようにしたいことがあり?私はこれは粘り気のある質問だと思うし、仕様には言及していない。

答えて

5

実際には、サーバはHTTP 416 Request Not Satisfiableで応答する必要があります(Content-Range: */0)。

+0

本当ですか?コレクションが空の場合の完全に異なるステータスコード?私は結果として空の配列を持つステータス200を期待します。 'Content-Range:*/0'は意味があります。 –

+0

もう少し見ると、416のステータスは、リクエストに無効な範囲を指定する 'Range'ヘッダーが含まれている場合に意味されると思います。ただし、範囲が指定されていない場合は、デフォルトの範囲を適用することができます。個人的には、範囲が指定されていても非常に不愉快な416だと思います。私が 'Range:0-99'を要求すると、私は100項目の最初の 'page'を取得したいだけです。実際にそれが少ない場合は誰が気に?私はそれを理解するために応答ヘッダーを読むでしょう。しかしステータス416が返ってくると、基本的に結果の総数をクライアントが個別に要求するようになります。意味がない。 –

+0

範囲の*開始*が範囲外だった場合、416は意味をなさないと思います。しかし、クライアントに最初に合計を取得させて、範囲の* end *を調整して合計内に収まるようにすることは、非常に直感的で(遅い)APIで終わることになります。 –

0

X-Y/0の数字が0以外の場合、サーバーからの応答は無効です(壊れています)。バグを報告してください。

+1

大丈夫です。コレクションが空の場合、サーバーにはどのような応答が必要ですか? '0-0'はコレクション内の* 1レコード*を意味するため、 'Content-Range:0-0/0'を持つことは不可能です。 – Doug

+1

コンテンツがないため、Content-Rangeヘッダーは返されません。もしあなたが*必須であるならば、(RFCから): "インスタンス長は、応答が生成された時点では不明"の場合、アスタリスク( "*")を返すことができます。 – Kylar

+0

* "コンテンツはないので、Content-Rangeヘッダを返さないでしょう。" *、意味があるかどうかはわかりません。なぜ、空のコレクションを例外として扱うのですか?それは私の心の中では意味がありません。空のコレクションは正常です。まるで奇妙な縁のように扱う理由はありません。 –