クライアントが大きなデータ ファイルをダウンロードするための REST Web サービスを作成しています。この一環として、例外が発生した場合、または元の要求で接続が失われた場合に、割り込みダウンロードを再開できるようにする機能を実装したいと考えています。
オンラインで調査を行ったところ、http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlに示されているように、要求ヘッダーで Range/If-Range プロパティをサポートすることが解決策になる可能性があることがわかりました。
私の質問は
REST Web サービスの範囲内で、クライアントの HTTP 要求ヘッダーで Range/If-Range プロパティをサポートすることが最も一般的でベスト プラクティスですか。それともクライアントの GET 要求でクエリ パラメータとしてバイト オフセットを渡すだけですか。ホスト名:ポート/ダウンロード?トークン=?バイトオフセット=? ?
サーバー側で前者のアプローチをとる場合、JAX-RS 仕様 (私は Java を使用しています) で Range フィールドを使用してリクエストを処理する標準的な方法はありますか? 簡単な方法は、ファイルから InputStream を開き、指定されたバイト数をバイパスすることです。