使用【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】调用接口的主要内容,如果未能解决你的问题,请参考以下文章