2012-04-23 18 views
1

我正在爲客戶端編寫REST Web服務以下載大型數據文件。作爲其中的一部分,我想實現一項功能,以便在發生異常或原始請求中的連接丟失的情況下啓用恢復中斷下載。使用Java在REST Web服務中啓用恢復中斷下載

我在線做了一些研究,發現在請求頭中支持Range/If-Range屬性可能是解決方案,如http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html中所示。

我的問題是

  1. 在REST Web服務的範圍,是它支持範圍最常用的和最佳實踐/ IF-範圍在客戶端的HTTP請求頭屬性,或者只是通過字節偏移量作爲客戶端GET請求中的查詢參數,例如,hostname:port/download?token =?byteoffset =?

  2. 如果採取前一種方法,在服務器端,有沒有一種標準的方式來處理JAX-RS規範中的範圍字段(我正在使用Java)的請求?直接的方法是從文件中打開InputStream並繞過給定的字節數。

回答

1

一般情況下,不要使用有 - 信息上的資源(或它您需要的部分)做參數,所以你應該使用範圍,並保持一定的服務器允許。

請注意,例如,byteoffset不是資源本身的有意義的部分,組件或語義上感興趣的位,而是克服部分內容的一種方式(對於所有資源也是相同的,因此您必須使用標頭允許的,嘿!他們在那裏)。