Feign简单介绍

前言

上一篇我们已经介绍了微服务之间的交互场景以及测试方法,其中聊到Feign,埋了个坑,今天我们来认识一下Feign

Feign是什么

Feign是一个声明式的Web服务客户端,它让编写Web服务客户端变得更加简单。Feign的目标是通过注解和减少样板代码来简化HTTP API客户端的开发,使得接口调用与HTTP请求之间的映射更为直观。Feign是由Netflix开发的,现在是Spring Cloud项目的一部分。

Feign的作用

  1. 「声明式API:」 Feign允许开发者使用注解来声明HTTP请求,将HTTP请求转换成Java接口的方法调用,使得开发者可以通过定义接口的方式来调用HTTP服务,而无需手动处理HTTP请求和响应。

  2. 「集成负载均衡:」 Feign集成了Netflix的负载均衡工具Ribbon,实现了服务的负载均衡。

  3. 「支持多种编码器和解码器:」 Feign支持多种数据格式的编码和解码,包括JSON、XML等。

  4. 「整合了Hystrix:」 Feign可以集成Hystrix,处理微服务调用中的故障和延迟。

  5. 「简化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客户端,代码是这样的:

Feign简单介绍

在上面的示例中,@FeignClient注解指明了这个接口是一个Feign客户端,name属性定义了该客户端要请求的服务名称。这种方式使得服务之间的调用像调用本地方法一样简便。

那如何调用呢?注入Feign Client:在服务消费端中,通过@Autowired注解注入定义的Feign Client接口。

Feign简单介绍

调用服务:通过注入的Feign Client接口像调用本地方法一样调用远程服务。

Feign接口测试

Eureka 注册中心找实例

因为Feign用的是HTTP作为传输协议的,直接将Feign接口当成http接口进行测试即可,一般情况下,问一下开发对应feign接口对应的微服务名(应用名)然后我们在 Eureka 注册中心找到对应的实例即可(其实就是ip+端口)

譬如上面的feign接口,所对应的微服务是为MH-SCS-WMS

Feign简单介绍

对应的应用实例为10.255.242.17:mh-scs-wms:31431,由实例名可以得知MH-SCS-WMS应用暴露的IP和端口,即为http://10.255.242.17:31431/ 直接拼接对应路径,传入参数即可完成Feign接口测试

Feign简单介绍

备注:

  • Feign接口传参类型是表单提交还是JSON提交,需要问一下开发,公司大部分Feign接口传参类型都是为JSON提交,部分老接口可能是表单提交
  • 一个应用可能会有多个实例,选择其中一个实例即可(如果开发本地启动项目,也会把本地服务注册进去,注意不要调用开发本地启动的实例)

Eureka OpenAPI查找

如果不想在去后台找的话,还可以通过Eureka OpenAPI查找出实例,直接Eureka地址拼接/eureka/apps/APPID即可,APPID为应用名

Feign简单介绍

总结

Feign的介绍,今天就先到这里了~总体来看,feign接口测试不难,跟普通的http接口测试基本一样,干就完事了~


原文始发于微信公众号(笋货测试笔记):Feign简单介绍

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/281548.html

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!