spring - 将 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 格式?谁能纠正我?
解决方案
已启用 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 会自动完成。只需在弹簧侧启用压缩。
推荐阅读
- javafx - “java.lang.RuntimeException: java.lang.reflect.InvocationTargetException” - 无法确定错误来自何处
- c - select() 响应标准输入但不响应 /dev/tty
- python - 如何在 Python 中读取 SPSS aka (.sav)
- python - 如何从网站上下载所有文件(不是 html 文件本身)
- r - 如何使用 fancyhdr 包在 RMarkdown 中编辑页脚
- regex - DXL 正则表达式
- node.js - 如何使用 mouse.wheel 在 puppeteer 5.1.0 中向右滚动?
- javascript - 如何使用 .offsetHeight 获取元素的高度?
- c - 为什么我的浮点数没有在 C 中打印,但我的整数是?
- macos - 在带有 macOS Big Sur 的 VMware 中,它不断地踢我的登录屏幕