欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringBoot整合Forest实现调用第三方接口

程序员文章站 2022-08-24 17:50:43
一、前言Forest是什么?Forest是一个高层的、极简的轻量级 HTTP调用API框架,让Java发送HTTP/HTTPS请求不再难。它比OkHttp和HttpClient更高层,比Feign更轻量,是封装调用第三方restful api client接口的好帮手。相比于直接使用Httpclient我们不再写一大堆重复的代码了,而是像调用本地方法一样去发送HTTP请求。项目地址:https://gitee.com/dt_flys/forest中文文档:https://dt_flys.gi...

一、Forest是什么?

Forest是一个高层的、极简轻量级 HTTP调用API框架,让Java发送HTTP/HTTPS请求不再难。它比OkHttp和HttpClient更高层,比Feign更轻量,是封装调用第三方restful api client接口的好帮手。

相比于直接使用Httpclient我们不再写一大堆重复的代码了,而是像调用本地方法一样去发送HTTP请求。

  1. 项目地址:https://gitee.com/dt_flys/forest
  2. 中文文档:https://dt_flys.gitee.io/forest/

SpringBoot整合Forest实现调用第三方接口

二、SpringBoot整合Forest实现调用第三方接口

1、pom.xml中引入依赖

<!-- Forest --> <dependency> <groupId>com.dtflys.forest</groupId> <artifactId>spring-boot-starter-forest</artifactId> <version>1.4.0</version> </dependency> 

2、application.yml中相关配置

# ========================== ↓↓↓↓↓↓ forest配置 ↓↓↓↓↓↓ ========================== forest: bean-id: config0 # 在spring上下文中bean的id, 默认值为forestConfiguration backend: okhttp3 # 后端HTTP API: okhttp3 【支持`okhttp3`/`httpclient`】 max-connections: 1000 # 连接池最大连接数,默认值为500 max-route-connections: 500 # 每个路由的最大连接数,默认值为500 timeout: 3000 # 请求超时时间,单位为毫秒, 默认值为3000 connect-timeout: 3000 # 连接超时时间,单位为毫秒, 默认值为2000 retry-count: 0 # 请求失败后重试次数,默认为0次不重试 ssl-protocol: SSLv3 # 单向验证的HTTPS的默认SSL协议,默认为SSLv3 logEnabled: true # 打开或关闭日志,默认为true 

3、配置扫描接口

在启动类上加上@ForestScan注解,并在basePackages属性中填写远程接口所在的包名

// forest扫描远程接口所在的包名 @ForestScan(basePackages = "com.zhengqing.demo.rpc.client") @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } 

SpringBoot整合Forest实现调用第三方接口

4、构建请求接口

温馨小提示:下面只是简单请求模拟测试,更多可参考官方文档!

public interface MyClient { /**
     * 本地测试接口
     */ @Get(url = "http://127.0.0.1:80/demo/index") String index(); @Get(url = "http://127.0.0.1:80/demo/hello?msg=${msg}") String hello(@DataVariable("msg") String msg); /**
     * 高德地图API
     */ @Get(url = "http://ditu.amap.com/service/regeo?longitude=${longitude}&latitude=${latitude}") Map getLocation(@DataVariable("longitude") String longitude, @DataVariable("latitude") String latitude); } 

5、测试

@Slf4j @RunWith(SpringRunner.class) @SpringBootTest public class DemoTest { @Autowired private MyClient myClient; @Test public void testForest() throws Exception { // 调用接口 String index = myClient.index(); log.info("index: 【{}】", index); String hello = myClient.hello("测试..."); log.info("hello: 【{}】", hello); Map location = myClient.getLocation("121.475078", "31.223577"); log.info("location: 【{}】", location.toString()); } } 

SpringBoot整合Forest实现调用第三方接口


本文案例demo源码

https://gitee.com/zhengqingya/java-workspace

本文地址:https://blog.csdn.net/qq_38225558/article/details/108258130