使用Java在REST Web服务中启用中断下载

时间:2012-04-23 17:03:57

标签: java http rest

我正在为客户编写REST Web服务来下载大数据文件。作为其中的一部分,我想实现一个功能,以便在发生异常或原始请求的连接丢失时恢复中断下载。

我在网上进行了一些研究,发现在请求标题中支持Range / If-Range属性可能是解决方案,如http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html所示。

我的问题是

  1. 在REST Web服务的范围内,它是在客户端HTTP请求标头中支持Range / If-Range属性的最常用和最佳实践,或者只是将字节偏移量作为查询参数传递给客户端GET请求,例如主机名:端口/下载?令牌=?byteoffset =?

  2. 如果采用前一种方法,在服务器端,是否有一种标准的方法来处理JAX-RS规范中的Range字段请求(我正在使用Java)?直接的方法是从文件中打开一个InputStream并绕过给定的字节数。

1 个答案:

答案 0 :(得分:1)

一般情况下,不要使用与资源(或其中所需的部分) meta 信息有关的参数,因此您应该使用Range,并确保服务器允许。

请注意,例如,byteoffset不是资源本身的有意义的部分,组件或语义上有趣的位,而是克服部分内容的一种方式(对所有资源也是如此,所以你必须使用那个允许的标题,嘿!他们就在那里)。