前言
上一篇我们已经介绍了微服务之间的交互场景以及测试方法,其中聊到Feign,埋了个坑,今天我们来认识一下Feign
Feign是什么
Feign是一个声明式的Web服务客户端,它让编写Web服务客户端变得更加简单。Feign的目标是通过注解和减少样板代码来简化HTTP API客户端的开发,使得接口调用与HTTP请求之间的映射更为直观。Feign是由Netflix开发的,现在是Spring Cloud项目的一部分。
Feign的作用
-
「声明式API:」 Feign允许开发者使用注解来声明HTTP请求,将HTTP请求转换成Java接口的方法调用,使得开发者可以通过定义接口的方式来调用HTTP服务,而无需手动处理HTTP请求和响应。
-
「集成负载均衡:」 Feign集成了Netflix的负载均衡工具Ribbon,实现了服务的负载均衡。
-
「支持多种编码器和解码器:」 Feign支持多种数据格式的编码和解码,包括JSON、XML等。
-
「整合了Hystrix:」 Feign可以集成Hystrix,处理微服务调用中的故障和延迟。
-
「简化HTTP请求:」 Feign简化了HTTP请求的处理,使得开发者更专注于业务逻辑而不是底层的HTTP通信细节。
在前一篇文章有介绍过,微服务之间相互调用,使用的是Feign,比HTTPClient好用多了…Feign 其实也是RPC框架中的一种(伪RPC),Spring Cloud全家桶中推荐使用的RPC框架,Feign使用了HTTP作为传输协议(这里不同于dubbo,dubbo默认配置中,传输层使用的是tcp协议)
RPC首先要有服务注册与发现中心,公司采用的是Feign + Eureka 注册中心,dubbo + Zookeeper注册中心(上文也有介绍过)
使用Feign时,开发人员需要做的是:
-
定义一个接口并用Feign注解标记; -
在接口中定义方法,并用映射到实际服务的HTTP动作的Spring MVC注解(如 @RequestMapping
,@GetMapping
,@PostMapping
等)进行标记; -
在Spring Boot的启动类上添加 @EnableFeignClients
注解启用Feign的功能。
例如,要创建一个Feign客户端,代码是这样的:
在上面的示例中,@FeignClient
注解指明了这个接口是一个Feign客户端,name
属性定义了该客户端要请求的服务名称。这种方式使得服务之间的调用像调用本地方法一样简便。
那如何调用呢?注入Feign Client:在服务消费端中,通过@Autowired注解注入定义的Feign Client接口。
调用服务:通过注入的Feign Client接口像调用本地方法一样调用远程服务。
Feign接口测试
Eureka 注册中心找实例
因为Feign用的是HTTP作为传输协议的,直接将Feign接口当成http接口进行测试即可,一般情况下,问一下开发对应feign接口对应的微服务名(应用名)然后我们在 Eureka 注册中心找到对应的实例即可(其实就是ip+端口)
譬如上面的feign接口,所对应的微服务是为MH-SCS-WMS
对应的应用实例为10.255.242.17:mh-scs-wms:31431
,由实例名可以得知MH-SCS-WMS
应用暴露的IP和端口,即为http://10.255.242.17:31431/ 直接拼接对应路径,传入参数即可完成Feign接口测试
备注:
-
Feign接口传参类型是表单提交还是JSON提交,需要问一下开发,公司大部分Feign接口传参类型都是为JSON提交,部分老接口可能是表单提交 -
一个应用可能会有多个实例,选择其中一个实例即可(如果开发本地启动项目,也会把本地服务注册进去,注意不要调用开发本地启动的实例)
Eureka OpenAPI查找
如果不想在去后台找的话,还可以通过Eureka OpenAPI查找出实例,直接Eureka地址拼接/eureka/apps/APPID
即可,APPID为应用名
总结
Feign的介绍,今天就先到这里了~总体来看,feign接口测试不难,跟普通的http接口测试基本一样,干就完事了~
原文始发于微信公众号(笋货测试笔记):Feign简单介绍
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/281548.html