一、前言

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实现调用第三方接口

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, 默认值为forestConfigurationbackend: okhttp3 # 后端HTTP API: okhttp3 【支持`okhttp3`/`httpclient`】max-connections: 1000 # 连接池最大连接数,默认值为500max-route-connections: 500 # 每个路由的最大连接数,默认值为500timeout: 3000 # 请求超时时间,单位为毫秒, 默认值为3000connect-timeout: 3000 # 连接超时时间,单位为毫秒, 默认值为2000retry-count: 0 # 请求失败后重试次数,默认为0次不重试ssl-protocol: SSLv3 # 单向验证的HTTPS的默认SSL协议,默认为SSLv3logEnabled: 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);}}

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 {@Autowiredprivate MyClient myClient;@Testpublic 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());}
}


本文案例demo源码

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


今日分享语句:
能力配不上野心,是所有烦扰的根源。这个世界是公平的,你要想得到,就得学会付出和坚持。每个人都是通过自己的努力,去决定生活的样子。

SpringBoot(32) 整合Forest实现调用第三方接口相关推荐

  1. 读取EXCEL文件数据,再调用第三方接口,将第三方数据重新写入到EXCEL文件

    读取EXCEL文件数据,再调用第三方接口,将第三方数据重新写入到EXCEL文件 工作中涉及很多提供文档数据,少则几条,多则上万,少的可以自己编辑一个,静态final来自己定义,一旦数太多得话,就得使用 ...

  2. Java 调用第三方接口方法

    Java 调用第三方接口方法 一. 通过JDK网络类Java.net.HttpURLConnection 1.java.net包下的原生java api提供的http请求 使用步骤: 1.通过统一资源 ...

  3. http方式调用第三方接口

    java如何调用对方http接口(II) - 流年煮雪 - 博客园 纯Java api HttpURLConnection Java调用外部接口_CJD的博客-CSDN博客_调用外部接口 纯Java  ...

  4. 调用第三方接口缴费的通用逻辑

    下面是我总结的调用第三方接口缴费的通用逻辑 代码逻辑如下: 代码示例: public RestDTO<BaseDTO> charge(Param param)throws Exceptio ...

  5. 前端调用第三方接口跨域问题(淘宝)

    前端调用第三方接口跨域问题 百度了好久,大部分的文章都前篇一律的说jsonp跨域,要不就是说配置CROS.看到那种文章出处应该都是一家,心好累.首先来说淘宝目前的接口是不支持jsonp请求的,配置CR ...

  6. Java 调用第三方接口,实战来了!

    在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口. 1.准备工作: 在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的restTem ...

  7. Http调用第三方接口的两种方式实例《超详细!!!》***

    Http调用第三方接口的两种方式<超详细!!!>* 最近在公司做一些调用第三方接口的工作,查阅了一部分的资料和向前辈以及朋友请教,完成了第三方接口的调用,其实主要是通过第三方提供的文档,完 ...

  8. UIPATH 调用第三方接口(百度OCR文字识别举例)

    业务场景: 使用RPA获取业务系统网站的验证码截图,将截图转base64之后传到百度OCR文字识别接口,获取文字识别结果,将识别结果用作登陆业务系统的验证码凭证.从而解决RPA自动登录系统的问题. 设 ...

  9. 使用令牌桶算法解决调用第三方接口限流问题

    我们在调用第三方接口时常常会碰到接口限流问题,为了解决这一问题,大家想出了许多方法.我这里介绍一下我的方法,第三方接口限流一般是基于令牌桶算法的,那么我们可以以彼之道还治彼身,使用令牌桶算法实现我方调 ...

最新文章

  1. NBT-新年4篇35分文章聚焦宏基因组研究
  2. 密码技术--国密SM4分组密码算法及Go语言应用
  3. Filter与Servlet区别
  4. 网工路由基础(1)静态路由
  5. duapp获取mysql用户名密码等等……
  6. php tp3 操作绑定到类,操作绑定到类 · ThinkPHP3.2.3完全开发手册 · 看云
  7. 2017 ACM Jordanian Collegiate J.Efficiency Test 动态规划、类倍增
  8. 网络通信程序写起来很难专业课没问题
  9. Python机器学习:决策树003使用信息熵寻找最优划分
  10. python3 messagebox_如何在Python3.4中正确实现tkMessageBox?
  11. 用户界面草图设计工具-工具包和资源
  12. 单独的REST JSON API服务器和客户端? [关闭]
  13. CentOS - thin web server for Ruby(centos下安装thin,运行rails)
  14. 《Ext JS权威指南》节选:树的动态加载及节点维护
  15. ASP.NET中的图片缓存
  16. android ios 在线图标生成器
  17. 计算机应用程序没声音,电脑突然没声音,多半是这三个原因导致的-维修经验...
  18. python学习笔记 BeautifulSoup趴数据
  19. 基于Unity3D 的Vuforia SDK开发基础教程
  20. 如何把密度函数化为标准正态二维分布_高中就开始学的正态分布,原来如此重要...

热门文章

  1. 揭秘TVS管是否能替代稳压二极管吗?
  2. NOI题库2.5 6264 走出迷宫
  3. Nexus私服仓库数据损坏 无法加载数据库问题解决
  4. 丈八网安王珩:带你重新认识网络靶场
  5. 刮刮卡android代码,在Android UI开发中,常见的刮刮卡是通过( )实现的
  6. 苹果电脑(Mac mini或Macbook或iMac)恢复出厂设置
  7. 没有PDA,你也可以有便携式日程管理软件
  8. DNS服务器配置- windows2012
  9. AB测试实战案例讲解及踩坑事项
  10. 癞子胡牌(听牌)算法