如何在SpringBoot中的POST请求中读取Gzip负载

时间:2019-07-31 09:28:25

标签: rest spring-boot post java-8 gzip

我需要在我的SPringBoot应用程序中接受JSON数据的POST请求中读取gzip压缩的json负载。为了保持应用程序的通用性,该如何做,因为将来可能会有其他客户端以纯json或其他压缩格式发送数据?我想这应该由服务器本身来处理,因此有什么方法可以指示嵌入式Tomcat解压缩有效负载吗?

我的SpringBoot应用程序在嵌入式Tomcat 9.0.17上运行。

控制器在POST请求中接受JSON负载。

@RequestMapping(value = "/update/v1", method = RequestMethod.POST, produces = "application/json", consumes = "application/json")
    public ResponseEntity<String> receiveUpdates(@RequestBody String update) {

我们最近更改了内容提供者,新的内容提供者以“ gzip”格式(带有标头content-encoding = gzip)发送有效载荷,并且没有任何内容类型标头。结果是出现以下错误

'error': 'Unsupported Media Type', 'message': "Content type '' not supported"

如果我将消费类型更改为MediaType.ALL_VALUE,则我的控制器开始接收请求,但有效载荷本身已压缩。我可以在服务层中处理它,但这将使其特定于压缩数据。

可以通过引入herehere所述的过滤器来处理压缩后的有效载荷来解决此问题。

但是我相信应该有一种方法来指示Tomcat处理此问题并提供未压缩的数据。

0 个答案:

没有答案