Feign的请求压缩
今天看到有关于Feign的请求压缩,这里记录一下...
首先Feign 是通过 http 调用的,那么就牵扯到一个数据大小的问题。如果不经过压缩就发送请求、获取响应,那么会因为流量过大导致浪费流量,这时就需要使用数据压缩,将大流量压缩成小流量。
Feign GZIP 压缩
源码:https://gitee.com/laiyy0728/spring-cloud/tree/master/spring-cloud-feign/spring-cloud-feign-gzip
Feign的请求压缩配置:
feign: compression:
request:
enabled: true
mime-type: text/html,application/xml,application/json
min-request-size: 2048
response:
enabled: true
# 开启日志
logging:
level:
com.laiyy.gitee.feign.springcloudfeigngzip.feign.GiteeFeignClient: debug
由于使用 gzip 压缩,压缩后的数据是二进制,那么在获取 Response 的时候,就不能和之前一样直接使用 String 来接收了,需要使用 ResponseEntity<byte[]> 接收
@FeignClient(name = "xxx-service", url = "https://www.xxx.com/", configuration = GiteeFeignConfiguration.class)public interface GiteeFeignClient {
@RequestMapping(value = "/search", method = RequestMethod.GET)
ResponseEntity<byte[]> searchRepo(@RequestParam("q") String query);
}
对应的Controller 也需要改为 ResponseEntity<byte[]>
@GetMapping(value = "feign-gitee")public ResponseEntity<byte[]> feign(String query){
return giteeFeignClient.searchRepo(query);
}
更具体地可参考博客: https://www.jianshu.com/p/e29d7f6be6e3
以上是 Feign的请求压缩 的全部内容, 来源链接: utcz.com/z/510576.html