当前位置:首页 > 技术分析 > 正文内容

Spring Boot + Feign 实现第三方接口调用

ruisui883个月前 (02-03)技术分析25

开发的系统服务中,我们常常需要同许多第三方接口进行对接集成。使用Feign可以更简单地实现HTTP调用,尤其是集成第三方API时。

1. 添加依赖

首先,在pom.xml中添加Feign的依赖:



    io.github.openfeign
    feign-core
    11.0


    io.github.openfeign
    feign-jackson
    11.0


    io.github.openfeign
    feign-spring4
    11.0

然后,在application.yml中配置Feign相关信息:

feign:
	client:
		config:
			default:
				loggerLevel: full //生产环境中,建议调整为basic或none,以避免日志过多
        connectTimeout: 5000
        readTimeout: 5000

2. 开启Feign功能

在Spring Boot的启动类中,使用@EnableFeignClients注解来启用Feign功能:

@SpringBootApplication
@EnableFeignClients // 开启 Feign 功能
public class FeignApplication {
		public static void main(String[] args) {
    		SpringApplication.run(FeignApplication.class, args);
		}
}

3. 创建Feign客户端接口

接下来,创建一个Feign客户端接口来定义与第三方接口的交互方式。例如,我们需要调用一个视频详情查询的API:

public interface VideoFeignClient {
    @GetMapping(consumes = "application/json")
    VideoResult getVideoDetail(@RequestParam("videoId") Long videoId);
}

在这个接口中,@GetMapping表示HTTP GET请求,@RequestParam用于传递请求参数。

4. feign客户端工厂类

为了灵活地创建Feign客户端实例,可以使用工厂模式。通过Feign.Builder动态生成Feign客户端实例:

@Component
public class FeignClientFactory {
    @Resource
    private Feign.Builder feignBuilder;

    public VideoFeignClient createVideoFeignClient(String url) {
    		return feignBuilder.target(VideoFeignClient.class, url);
    }
}

5. 创建响应对象

定义一个响应对象类VideoResult来接收API的返回结果:

@Schema(description = "分页结果")
@Data
public class VideoResult implements Serializable {
    @Schema(description = "错误码", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer code;
    
  	@Schema(description = "错误提示", requiredMode = Schema.RequiredMode.REQUIRED)
    private String msg;
    
  	@Schema(description = "视频列表", requiredMode = Schema.RequiredMode.REQUIRED)
    private T data;
    
  	public VideoResult() {
    }
    
  	public VideoResult(T data) {
      this.data = data;
    }
}

定义视频详情实体类,接受第三方接口返回的视频详情信息:

@Data
public class VideoDetailRespVO {
    @Schema(description = "视频id", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long vodId;
    
  	@Schema(description = "分类id", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer typeId;
    
  	@Schema(description = "视频名称", requiredMode = Schema.RequiredMode.REQUIRED)
    private String vodName;
    
  	@Schema(description = "副标题", requiredMode = Schema.RequiredMode.REQUIRED)
    private String vodSub;
    
  	@Schema(description = "英文名称", requiredMode = Schema.RequiredMode.REQUIRED)
    private String vodEn;

    // ....更多属性
}

6. 使用Feign客户端

在服务层,注入Feign客户端并调用第三方接口:

@Service
public class VideoService {
    @Resource
    private FeignClientFactory feignClientFactory;
    
  	public VideoResult getVideoDetail(Long videoId) {
      // 可以从数据库配置中获取第三方接口的访问地址
      String url = 获取第三方的访问地址;
      VideoFeignClient videoFeignClient = feignClientFactory.createVideoFeignClient(url);
      return videoFeignClient.getVideoDetail(videoId);
    }
}

在Controller中调用该服务方法:

@RestController
@RequestMapping("/video")
public class VideoController {
    @Autowired
    private VideoService videoService;
    
  	@GetMapping
    public VideoResult getVideoDetail(@RequestParam Long videoId) {
        return videoService.getVideoDetail(videoId);
    }
}

6. 流程图

以下是调用流程的简要图示:

7. 总结

使用Spring Boot结合Feign,可以非常方便地实现与第三方接口的集成。通过声明一个 Feign 客户端接口,并通过 @FeignClient 注解与第三方服务进行集成,我们可以快速实现 HTTP 请求的调用,而无需手动编写复杂的 RestTemplate 或 HttpURLConnection 代码。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1167.html

标签: feign 使用
分享给朋友:

“Spring Boot + Feign 实现第三方接口调用” 的相关文章

几个linux发行版使用感受

linux发行版有哪些linux发行版有上千种,但每一种发行版并不是与其它的发行版没任何关系,有些发行版是基于其他发行版制作的。如果乐意,你自己也可以动手制作属于自己的发行版,然后分发给其他人使用,所以非常自由,可选择的非常多。常见的发行版有:RedHat、Ubuntu、OpenSUSE、Gento...

祸害阿里云宕机3小时的IO HANG究竟是什么?

本文来自微信公号“CSDN”(ID:CSDNnews),作者 | 王知无, 责编| 郭 芮。2019年3月3日凌晨,微博炸锅,有网友反映说阿里云疑似出现宕机,华北很多互联网公司受到暴击伤害,APP、网站全部瘫痪,我自己的朋友圈和微信群里也有好友反馈,刚刚从被窝被叫起来去修Bug,结果发现服务器登不上...

博信股份新战略后再推新品 TOPPERS E2耳机售价199元

中新网6月21日电 20日,博信股份在北京正式推出新品TOPPERS主动降噪耳机E2,这是博信股份继2月战略暨新品发布会后的第二次新品亮相。价格方面,TOPPERS主动降噪耳机E2零售价199元,并于6月20日下午4点在京东商城公开销售。据介绍,TOPPERS主动降噪耳机E2采用AMS(奥地利微电子...

高效使用 Vim 编辑器的 10 个技巧

在 Reverb,我们使用 MacVim 来标准化开发环境,使配对更容易,并提高效率。当我开始使用 Reverb 时,我以前从未使用过 Vim。我花了几个星期才开始感到舒服,但如果没有这样的提示,可能需要几个月的时间。这里有十个技巧可以帮助你在学习使用 Vim 时提高效率。1. 通过提高按键重复率来...

HTML5+眼球追踪?黑科技颠覆传统手机体验

今天,iH5工具推出一个新的神秘功能——眼动追踪,可以通过摄像头捕捉观众眼球活动!为了给大家具体演示该功能的使用,我做了一个案例,供大家参考。实际效果如下:案例比较简单,就是通过眼动功能获取视觉焦点位置,剔除用户看中的牌。现在,舞台的属性中多了一个“启用眼动”的选项,另外,还多了一个“启用摄像头”的...

2024最新版:前端性能优化方案汇总

前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~Hello,大家好,我是 Sunday。前端性能优化一直是很多同学非常关注的问题,在日常的面试中也是经常会被问到的点。所以今天咱们就花一点时间来了解一下2024最新的...