2

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

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

我的问题是

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

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

4

1 回答 1

1

通常,不要使用与资源(或您需要的部分)信息有关的参数,因此您应该使用 Range,并确保服务器允许这样做。

请注意,例如,byteoffset它不是资源本身的有意义的部分、组件或语义上有趣的部分,而是一种克服部分内容的方法(同样,所有资源都相同,因此您必须使用允许的标头,并且嘿!他们是为此而存在的)。

于 2012-04-23T17:10:28.340 回答