使用【Feign】调用接口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用【Feign】调用接口相关的知识,希望对你有一定的参考价值。

参考技术A 使用feign能像使用service类一样的方式调用接口,使调用简单明了。
文档: https://cloud.spring.io/spring-cloud-openfeign/reference/html/

新建一个interface使用注解 @FeignClient 示例中是直接通过接口地址调用,要指定 name 。
另一种方式是使用 Eureka 服务发现的应用,要调用微服务可以直接指定应该名就可以了 @FeignClient("myapi")
interface里面调用 search 接口的写方和接口的定义几乎一样。示例中用了 @SpringQueryMap 注解,其作用是动态的添加url后面的参数,如果 parameter 没有设置的项(如pageSize)会被忽略 https://v1.myapi/search?keyword=xxx&type=xxx&page=0 。

Feign来调用服务

Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。服务直接的调用有了feign可谓方便许多,只需一个接口,一个注解即可调用服务。

步骤:

1、在它的pom文件引入Feign的起步依赖spring-cloud-starter-feign

2、将服务注册到Eureka即可

3、开启Feign功能

4、

5、使用Feign过程的三个坑:

(1)在接口中@GetMapping不支持,必须是@RequestMapping,然后写方法才可以。

(2)圆圈中的value必须要写。否则报错。

(3)

当请求对象是复杂对象时的问题:

6、如何自定义feign的配置:

这个跟自定义ribbon的配置类似:

7、关于使用feign时第一次总是timeout的情况解决

问题截图:

问题原因:

因为hystrix的超时机制导致的,feign支持断路器的功能

问题解决:

 

 

以上是关于使用【Feign】调用接口的主要内容,如果未能解决你的问题,请参考以下文章

Feign远程调用原理

SpringCloud系列六:Feign接口转换调用服务(Feign 基本使用Feign 相关配置)

本地调用Feign远程接口

feign接口调用时问题整理

SpringBoot如何使用Feign实现远程接口调用

springBoot使用feign实现远程接口调用和错误熔断