一. 简介
1. 声明式,模板化的HTTP客户端,可以帮助我们更加便捷,优雅的调用HTTP API;
2. 为服务消费者整合Feign
添加spring-cloud-starter-openfeigh依赖;
创建一个Feign接口,添加@FeignClient注解;
在Controller中调用Feign接口;
3. 自定义Feign配置
feign:
client:
config:
default:
connectTimeout: // 相当于Request.Options
readTimeout: // 相当于Request.Options
loggerLevel: // 配置Feign的日志级别,相当于代码配置方式中的Logger
errorDecoder: // Feign的错误解码器,相当于代码配置方式中的ErrorDecoder
retryer: // 配置重试,相当于代码配置方式中的Retryer
requestInterceptors: // 配置拦截器,相当于代码配置方式中的RequestInterceptor
decode404:
4. 对压缩的支持
feign.compression.request.enabled = true;
feign.compression.request.mine-types = text/xml, application/xml, application/json;
feign.compression.request.min-request-size = 2048;
feign.compression.response.enabled = true;
5. Feign的日志
可以为通过feign.client.config.loggerLevel为每个Feign客户端配置各自的Logger.level对象,告诉Feign记录哪些日志,Logger.Level的值有以下选择:
NONE:不记录任何日志(默认);
BASIC:仅记录请求方法,URL,响应状态代码以及执行时间;
HEADERS:记录BASIC级别的基础上,记录请求和响应的header;
FULL:记录请求和响应的header,body和元数据;
6. 多参数请求
方法一:URL有几个参数,Feign接口中的方法就有几个参数,使用@RequestParam注解指定具体的请求参数;
方法二:当目标URL参数非常多时,可使用Map来简化Feign接口的编写;
7. 上传文件
Feign官方提供的子项目feign-form中实现了上传文件所需的Encoder;