范围请求

Spring WebFlux 支持 RFC 9110 范围请求。有关概述,请参阅 范围请求 Mozilla 指南。

当一个注解控制器返回 ResourceResponseEntity<Resource>,或者一个函数式端点 提供 Resource 时,Range 头在 WebFlux 中被透明地解析和处理。 当提供 静态资源 时,Range 头支持也得到透明处理。

Resource 不能是 InputStreamResource,并且对于 ResponseEntity<Resource>, 响应的状态码必须是 200。

底层支持在 HttpRange 类中,该类公开了用于解析 Range 头并将 Resource 分割成 List<ResourceRegion> 的方法, 然后 List<ResourceRegion> 可以通过 ResourceRegionEncoderResourceHttpMessageWriter 写入响应。