首页 > 解决方案 > 将 GZIP 与 RestTemplate 一起使用

问题描述

我想对我的请求和来自服务器的响应使用 gzip 以节省带宽。我的服务器支持 100% gzip 格式。到目前为止我所做的:

HttpHeaders headers = new HttpHeaders();
        headers.add("Authorization", myAuthorization());
headers.add(HttpHeaders.ACCEPT_ENCODING, "GZIP");
headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<MyParameters> request = new HttpEntity<>(parameters, headers);

ResponseEntity<? extends MyResponseRaw> response = restTemplate.exchange(url, HttpMethod.POST,
                    request, myResponse.getClass());

我用“Accept-Encoding”到“GZIP”在请求的标题中添加了一个标志。但是当我从服务器检查响应对象时,它仍然发送一个普通对象,而不是 zip 对象,并且在它的标题中也没有 "Content-Encoding" : "GZIP" 。

我不知道我是否在这里犯了任何错误,或者我是否还需要将我的请求压缩为 gzip 格式?谁能纠正我?

标签: springgzipresttemplate

解决方案


已启用 gzip 压缩?

如果没有,请将其放入您的属性中:

server.compression.enabled=true
server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain,application/javascript,text/css

添加 headers 只是修改了请求的 headers,它不会自动进行压缩。

浏览器应发送接受 gzip 标头。所以服务器知道它可以将答案压缩给客户端。但我认为您不需要自己添加标题。浏览器应该自动完成,spring 会自动完成。只需在弹簧侧启用压缩。


推荐阅读