2

クライアントが大きなデータ ファイルをダウンロードするための REST Web サービスを作成しています。この一環として、例外が発生した場合、または元の要求で接続が失われた場合に、割り込みダウンロードを再開できるようにする機能を実装したいと考えています。

オンラインで調査を行ったところ、http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlに示されているように、要求ヘッダーで Range/If-Range プロパティをサポートすることが解決策になる可能性があることがわかりました。

私の質問は

  1. REST Web サービスの範囲内で、クライアントの HTTP 要求ヘッダーで Range/If-Range プロパティをサポートすることが最も一般的でベスト プラクティスですか。それともクライアントの GET 要求でクエリ パラメータとしてバイト オフセットを渡すだけですか。ホスト名:ポート/ダウンロード?トークン=?バイトオフセット=? ?

  2. サーバー側で前者のアプローチをとる場合、JAX-RS 仕様 (私は Java を使用しています) で Range フィールドを使用してリクエストを処理する標準的な方法はありますか? 簡単な方法は、ファイルから InputStream を開き、指定されたバイト数をバイパスすることです。

4

1 に答える 1

1

一般に、リソース (または必要なその一部) のメタ情報に関係するパラメーターは使用しないでください。そのため、Range を使用する必要があり、サーバーがそれを許可していることを確認してください。

たとえば、byteoffsetリソース自体の意味のある部分、コンポーネント、または意味的に興味深いビットではなく、部分的なコンテンツを克服する方法であることに注意してください (また、すべてのリソースで同じであるため、許可されているヘッダーを使用する必要があり、ちょっと!彼らはそのためにそこにいます)。

于 2012-04-23T17:10:28.340 に答える