範囲単位

範囲単位

[3] 範囲単位 (range unit) は、範囲要求部分応答表現のどの部分が含まれているかを記述するための単位です。 普通は bytes が使われます。

仕様書

構文

[8] 範囲単位は構文的には字句とされています >>1

  1. 字句

[9] HTTPRTSP で定義されている範囲単位はすべてASCII大文字・小文字不区別となっています >>1, >>2。明記されていませんが、すべての範囲単位ASCII大文字・小文字不区別と思われます。

文脈

[4] 範囲単位は、次の場面で使われます。

単位

[6] 次の範囲単位が存在しています。

[15] HTTP については IANA登録簿があります >>14RFC 7233 で導入されました。

[5] HTTP では、 bytes が規定されているほか、 新しい単位は IANA に登録するべき (ought to) >>1 とされています。

[7] RTSP ではsmptesmpte-30-dropsmpte-25nptclock が規定されています。

[12] これらは Protocol for Media Fragments 1.0 Resolution in HTTPHTTP においても提案されていましたが、謎の接頭辞の仕組みが併用されています。

[10] none範囲単位ではありませんが、 Accept-Ranges:範囲単位のかわりに用いられます。 IANA にも予約として登録されています >>14

[17] HTTP ではどの範囲単位の実装も義務付けられていませんが、 キャッシュbytes を実装するべき (ought to) >>16 とされています。大容量のファイルの送受信を行う利用者エージェントは、 実用上、 bytes を実装する必要があります。

[20] 未対応のは範囲の指定を無視するでしょうし、未対応の利用者エージェントはファイル全体を要求するだけでしょうから、 非効率的であるだけで実装しなくても構わないといえば構わないのですが。

濫用

[19] Heroku API >>18ページングのためのキーの指定のために範囲単位を濫用しています。

メモ

[11] ajax - Using the HTTP Range Header with a range specifier other than bytes? - Stack Overflow ( ( 版)) <http://stackoverflow.com/questions/1434647/using-the-http-range-header-with-a-range-specifier-other-than-bytes>

[13] Byte Rot: Using range header for retrieving range of IEnumerable<T> in ASP.NET Web API ( ( 版)) <http://byterot.blogspot.jp/2012/07/range-header-asp-net-web-api-entity-pagination.html>

[21] Platform API Reference | Heroku Dev Center () <https://devcenter.heroku.com/articles/platform-api-reference#ranges>

List requests will return a Content-Range header indicating the range of values returned. Large lists may require additional requests to retrieve. If a list response has been truncated you will receive a 206 Partial Content status and the Next-Range header set. To retrieve the next range, repeat the request with the Range header set to the value of the previous request’s Next-Range header.

The number of values returned in a range can be controlled using a max key in the Range header. For example, to get only the first 10 values, set this header: Range: id ..; max=10;. max can also be passed when iterating over Next-Range. The default page size is 200 and maximum page size is 1000.

The property used to sort values in a list response can be changed. The default property is id, as in Range: id ..;. To learn what other properties you can use to sort a list response, inspect the Accept-Ranges headers.

[22] Divide Large Responses Across Requests with Ranges · HTTP API Design (Wesley Beary著, ) <https://geemus.gitbooks.io/http-api-design/content/en/foundations/divide-large-responses-across-requests-with-ranges.html>

Large responses should be broken across multiple requests using Range headers to specify when more data is available and how to retrieve it.