我正在为客户编写REST Web服务来下载大数据文件。作为其中的一部分,我想实现一个功能,以便在发生异常或原始请求的连接丢失时恢复中断下载。
我在网上进行了一些研究,发现在请求标题中支持Range / If-Range属性可能是解决方案,如http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html所示。
我的问题是
在REST Web服务的范围内,它是在客户端HTTP请求标头中支持Range / If-Range属性的最常用和最佳实践,或者只是将字节偏移量作为查询参数传递给客户端GET请求,例如主机名:端口/下载?令牌=?byteoffset =??
如果采用前一种方法,在服务器端,是否有一种标准的方法来处理JAX-RS规范中的Range字段请求(我正在使用Java)?直接的方法是从文件中打开一个InputStream并绕过给定的字节数。
答案 0 :(得分:1)
一般情况下,不要使用与资源(或其中所需的部分) meta 信息有关的参数,因此您应该使用Range,并确保服务器允许。
请注意,例如,byteoffset
不是资源本身的有意义的部分,组件或语义上有趣的位,而是克服部分内容的一种方式(对所有资源也是如此,所以你必须使用那个允许的标题,嘿!他们就在那里)。