通过Feign调用外网HTTP,设置请求头,熔断器
在许多项目中,往往需要和其他厂商的项目进行对接。这就不得不访问外部url接口。网上的各种方案层出不穷,但我不太喜欢额外添加maven依赖,所以使用已有的feign实现。
由于个人习惯,我的spring-boot版本是2.6.7。这导致了我添加openfeign依赖时总是报错,因为网络上的教程往往是使用了Hoxton.SR8版本的spring-cloud,它的绑定依赖openfeign是2.2.5.RELEASE。
版本兼容的问题往往最难为新手。
添加Maven依赖
xml<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>2.2.9.RELEASE</version>
</dependency>在启动类添加注解
java在配置文件中打开熔断器
propertiesfeign.circuitbreaker.enabled=true
编写Feign接口
java
public interface OutFeign {
Object getInfo();
}在@FeignClient中,url指定外部http请求,name或value为注解必写参数,fallback则是熔断器指定实现类。
@GetMapping中,headers可以设置请求头,因不同于大部分博客上的版本,所以headers中的参数用等于号相连。
编写熔断器实现类
java
public class OutFeignImpl implements OutFeign {
public Object getInfo() {
return "---触发熔断---";
}
}
至此,便可以在项目中调用外部url了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XXDBOOM!