一、什么是OpenFeign
OpenFeign目前是Spring Cloud二级子项目。平时所说的Feign指的是Netflix下的Feign。
它是一种申明式、模板化的HTTP客户端,使用时好像在写控制器,代码写在接口中,在声明方法上添加SpringMVC注解或者声明的参数上添加SpringMVC注解就可以完成调用远程的控制方法。
二、OpenFeign远程调用的基本语法
1、无参方法的的远程调用
package com.lxh.service;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient("USER-SERVICE")
public interface FeignService {
/**
* 方法要求:
* 返回参数:和远程方法对应(其实能转换的话不对应也可以)
* 参数:要与远程方法一致
* 方法名: 随意
* 请求方式:要与远程方法一致
* 请求路径:远程接口路径
*/
@GetMapping("/hello")
String callServiceHello();
}
2、普通表单远程调用
/**
* 通过@Requstparam注解传递表单参数,如果变量名和远程方法一致可以不写name,
*否则就得这样写@Requstparam("userName")
*/
@PostMapping("/printUserNameAndPassword")
String callUserServicePrintUserNameAndPassword(@RequestParam("userName")
String username,
@RequestParam
String password);
3、restful参数传递远程调用
@GetMapping("/restful/{userName}/{age}")
String callUserRestful(@PathVariable String userName, @PathVariable Integer age);
4、传递实体参数的远程方法调用
/**
* 隐式的添加了@ResquestBody注解,Feign中最多只能有一个不加注解的参数
*/
@PostMapping("/entityParam")
User callEntityParam(User user);
三、OpenFeign通讯优化
1、gzip:
- 概念
数据格式,采用deflate格式压缩。
- 作用
网络数据压缩后实际上降低了网络传输的字节,可以加快网页加载速度。
另外搜索引擎直接抓取gzip文件比直接抓取普通文件更快。
2、Http请求中关于压缩传输协议的规定
![image.png](https://img-blog.csdnimg.cn/img_convert/d67efffafd7cca733f427805c683e56d.png#clientId=u6bb12d85-4595-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=185&id=uc61105ed&margin=[object Object]&name=image.png&originHeight=185&originWidth=924&originalType=binary&ratio=1&rotation=0&showTitle=false&size=55856&status=done&style=none&taskId=ubd108ac3-9ed8-4a01-91cc-2456bb2994a&title=&width=924)
3、OpenFiegn运行gzip压缩
只影响到微服务调用之间的调用的压缩数据传输,不影响浏览器和ApplicationClient的传输。
4、配置OpenFiegn请求-应答gzip压缩
# 开启请求gzip
compression.request.enabled=true
# 设置支持gzip的请求、响应类型(MIME)
compression.request.mime-types=text/xml,application/xml,application/json
# 配置启动压缩的最小阈值,默认2048
compression.request.min-request-size=2048
# 开启响应gzip
compression.response.enabled=true
# 配置gzip响应解压
compression.response.useGzipDecoder=true。