导读 | Feign是一种声明式、模板化的HTTP客户端。
一、Feign是什么?
Feign是简化Java HTTP客户端开发的工具(java-to-httpclient-binder),它的灵感来自于Retrofit、JAXRS-2.0和WebSocket。Feign的初衷是降低统一绑定Denominator到HTTP API的复杂度,不区分是否为restful。
总结:Feign是一种声明式、模板化的HTTP客户端。
二、为什么使用Feign?
开发人员使用Jersey和CXF等工具可以方便地编写java client,从而提供REST或SOAP服务;开发人员也可以基于Apache HC等http传输工具包编写自己的java http client;而Feign的关注点在于简化开发人员使用工具包的复杂度,以最少的代码编写代码从而提供java http客服端。通过定制解码器和异常处理,开发人员可以任意编写文本化的HTTP API。
总结:使用它的目的就是简化并提供java http客服端。
三、Feign的工作原理?
Feign通过处理注解生成request,从而实现简化HTTP API开发的目的,即开发人员可以使用注解的方式定制request api模板,在发送http request请求之前,feign通过处理注解的方式替换掉request模板中的参数,这种实现方式显得更为直接、可理解。
四、如何使用Feign呢?
主要步骤如下:
第一步:在pom.xml配置文件中引入资源包
第二步:项目启动类中,添加feign的注解。主要有@EnableFeignClients。这里我们也引入了eureka的注解,因为一般情况下feign与eureka一起使用的。
说明:其中port 服务端口;name 服务名称;eureka 的配置
第三步:在controller控制类文件,通过@UserFeignClient 注解引入客户端使用。
第四步:在controller控制类文件,通过@UserFeignClient 注解引入客户端使用。
第五步:写了一下客户端去测试。
但注意有两个坑:1. @GetMapping不支持 2. @PathVariable得设置value。其中该请求不会成功,只要参数是复杂对象,即使指定了是GET方法,feign依然会以POST方法进行发送请求。可能是我没找到相应的注解或使用方法错误。
四、feign的配置
五、总结使用的常见问题
声明:文章属于个人原创,转载请注明文章出处