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

Spring Boot中使用OpenFeign实现第三方接口的封装调用?

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

在SpringBoot项目开发过程中,可能或多或少的会涉及到第三方接口的调用,并且在SpringBoot框架中也提供了很多的支持第三方接口调用的方式。但是在这些实现技术中,唯独使用OpenFeign来实现对第三方接口的封装调用,大大的简化HTTP客户端的编写。

OpenFeign是一个声明式的HTTP客户端,在开发中可以通过简单的注解就可以完成HTTP请求的定义和调用。这样在一定程度上就减少了手动去处理HTTP请求和响应的工作量,比起其他的实现来看真的是简单了不少。

下面我们就来看看如何在SpringBoot中使用OpenFeign来实现第三方接口的调用。

添加依赖

要想使用OpenFeign的功能,就必须要引入OpenFeign的依赖,如下所示。


org.springframework.cloud
spring-cloud-starter-openfeign

同时OpenFeign是Spring Cloud中的组件所以需要确保在项目中添加了Spring Cloud相关的版本依赖。当然也可以单独进行依赖。二者不冲突。如下所示。需要选择合适的Spring Cloud 的版本。


    
        
            org.springframework.cloud
            spring-cloud-dependencies
            Hoxton.SR10 
            pom
            import
        
    

启用Feign

依赖引入完成之后,接下来就是配置Spring Boot的主启动类,要想使用OpenFeign,就需要在SpringBoot的启动类上添加@EnableFeignClients注解以启用Feign,如下所示。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableFeignClients
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

定义Feign客户端接口

接下来就是通过@FeignClient注解来创建一个用于第三方调用的接口,如下所示。

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient(name = "thirdPartyApi", url = "https://api.example.com")
public interface ThirdPartyApiClient {

    @GetMapping("/endpoint")
    String getEndpointData(@RequestParam("param") String param);
}

@FeignClient这个注解就是用来声明Feign的客户端。在这个注解中通过url指定了第三方API的基本URL。而在下面的方法中通过@GetMapping注解用于指定请求的HTTP方法和路径。就可以实现对第三方接口的调用。

使用Feign客户端

接下来就是在Service层调用注入的第三方接口客户端来进行调用,如下所示。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ApiService {

    @Autowired
    private ThirdPartyApiClient thirdPartyApiClient;

    public String fetchData(String param) {
        return thirdPartyApiClient.getEndpointData(param);
    }
}

更多配置(可选)

当然除了上面设置的内容之外,还可以创建一些自定义的配置项,例如对于超时时间、重试策略等的配置,而这些配置就需要另外的配置文件,如下所示。

import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FeignConfig {

    @Bean
    public Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }
}

创建完成之后,就可以在@FeignClient注解中引用这个配置,通过这个配置就可以对第三方调用的接口请求进行配置了。

@FeignClient(name = "thirdPartyApi", url = "https://api.example.com", configuration = FeignConfig.class)
public interface ThirdPartyApiClient {
    // 方法定义
}

总结

通过上面的实现步骤,就可以通过OpenFeign来封装和调用第三方接口了,然后就可以在SpringBoot项目中引用相关的配置服务,这个配置服务可以像是调用本地的逻辑实现一样。让HTTP客户端的开发变得更加便捷和高效。

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

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

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

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

“Spring Boot中使用OpenFeign实现第三方接口的封装调用?” 的相关文章

10分钟搞定gitlab-ci自动化部署

gitlab-ci 是持续集成工具/自动化部署工具,类似 jenkins。持续集成 是将代码集成到共享存储库并尽可能早地自动构建/测试每个更改的实践 - 通常一天几次。概述在编码完成时都会进行打包发布过程,如果每次都手动操作这一步骤就会浪费时间,效率低下。所以就有了持续集成。准备事项请提前安装以下软...

Java教程:gitlab-使用入门

1 导读本教程主要讲解了GitLab在项目的环境搭建和基本的使用,可以帮助大家在企业中能够自主搭建GitLab服务,并且可以GitLab中的组、权限、项目自主操作GitLab简介GitLab环境搭建GitLab基本使用(组、权限、用户、项目)2 GitLab简介GitLab是整个DevOps生命周期...

JavaScript数组操作:掌握常用方法,提升开发效率

JavaScript数组操作:从增删改查到高级应用本文深入解析JavaScript中常用的数组方法,包括push、unshift、pop、shift、map、filter、reverse、at 和 slice。通过详细的例子和应用场景,帮助开发者快速掌握这些方法,提升代码效率和可读性。开篇点题作为J...

什么是同步通信?什么是异步通信?它们有什么区别?

串行通信一般又分为同步和异步通信,同步通信需要同步时钟信号,而异步通信则不需要同步时钟信号。同步通信:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。异步通信:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。同步通信与异步通信有什么区别呢?1、同步通信要求接收端...

那些你不知道的 TCP 冷门知识

最近在做数据库相关的事情,碰到了很多TCP相关的问题,新的场景新的挑战,有很多之前并没有掌握透彻的点,大大开了一把眼界,选了几个案例分享一下。案例一:TCP中并不是所有的RST都有效背景知识:在TCP协议中,包含RST标识位的包,用来异常的关闭连接。在TCP的设计中它是不可或缺的,发送RST段关闭连...

Swiper - 免费开源、功能强大的触摸滑动js特效插件

简单配置就能实现手机、PC 网页中滑动、焦点轮播图、tab 切换和触摸导航等大部分功能。js 滑动特效插件Swiper 是一款纯 javascript 打造的滑动特效插件,主要用对移动端 web 开发中的内容触摸滑动需求,同时兼容 PC 网页。该插件团队维护多年,非常稳定,是移动端网站滑动需求的重要...