我需要在我的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,则我的控制器开始接收请求,但有效载荷本身已压缩。我可以在服务层中处理它,但这将使其特定于压缩数据。
可以通过引入here和here所述的过滤器来处理压缩后的有效载荷来解决此问题。
但是我相信应该有一种方法来指示Tomcat处理此问题并提供未压缩的数据。