Feign:声明式REST调用

一. 简介

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;

上一篇:idea克隆项目,git clone出现early EOF问题的解决方案


下一篇:Git实战笔记(一) 常见错误