推荐一款不错的国内开源JavaHttp客户端框架-Forest

推荐一款不错的国内开源JavaHttp客户端框架-Forest

前言

做为一个Java后端开发程序员,相信大家在项目中都经常会遇到作为Http客户端调用第三方接口的场景。大部分的人首选的都是基于apache的HttpClient和OkHttp来进行开发,每个人都会去封装一套用来请求不同请求方式接口的代码工具类,使得项目中的接口调用方式五花八门,技术不统一,有些同事可能连请求日志都没有进行输出,出现问题很难排查。尤其在生产服务器上部署时,又无法像在本地开发环境一样能够打断点调试。

Forest的出现能够完美的解决以上的这些问题,而且Forest提供了两种实现http客户端的方式分别为声明式和编程式接口,并且对日志统一进行了处理,极大的提高了线上问题排查的能力,且日志支持可配置,可以通过配置控制是否输出日志。好了以上说了这么多下面一起看下Forest怎么使用,具体能为我们解决什么样的问题:

官方文档地址:https://forest.dtflyx.com/

github地址:https://github.com/dromara/forest

gitee地址:https://gitee.com/dromara/forest

最新版本

官方最新版目前是支持到了v1.5.30

版本

该项目在gitee中标星2.9k

在github中标星1.3k

所需环境

JDK版本: 8+

可集成的 spring boot 版本: 1.x, 2.x

也可不依赖 spring boot 和 spring

Forest优点:

  1. 配置简单上手快,官方提供了丰富的文档,支持在springboot、Solon、原生java环境下的快速使用。
  2. 拓展灵活,支持自定义注解和自定义拦截器,以应对意想不到的场景。

名字由来

Forest就字面意思而言,就是森林的意思。但仔细看可以拆成For和Rest两个单词,也就是“为了Rest”(Rest为一种基于HTTP的架构风格)。 而合起来就是森林,森林由很多树木花草组成(可以理解为各种不同的服务),它们表面上看独立,实则在地下根茎交错纵横、相互连接依存,这样看就有点现代分布式服务化的味道了。 最后,这两个单词反过来读就像是Resultful。

举个栗子

由于官方文档已经描述的很详细了,这里就不做过多的赘述了。

在 Forest 中,所有的 HTTP 请求信息都要绑定到某一个接口的方法上,不需要编写具体的代码去发送请求。请求发送方通过调用事先定义好 HTTP 请求信息的接口方法,自动去执行 HTTP 发送请求的过程,其具体发送请求信息就是该方法对应绑定的 HTTP 请求信息。

声明式接口简单请求

Forest支持JSON、XML、普通文本等数据转换形式。不需要接口调用者自己写具体的数据转换代码

重试机制通过配置设置接口请求的最大重试次数和重试时间间隔,默认为0次。最大时间间隔单位为毫秒,默认为 0 毫秒。

Gzip是现在一种流行的文件压缩算法,有相当广泛的应用范围。尤其是当Gzip用来压缩存文本文件的时候效果尤为明显,大概能减少70%以上的文件大小(具体多少取决于文件中的内容)。

现有的很多HTTP服务器系统都支持Gzip,如Apache、PHP等,经过这些服务压缩过的数据可以降低网络传输的流量,提高客户端的响应速度。

Forest在发送请求时和接受响应数据时都会自动打印出HTTP请求相关的日志,其中包括:请求日志、响应状态日志、响应内容日志。

在Forest中的回调函数使用单方法的接口定义,这样可以使您在 Java 8 或 Kotlin 语言中方便使用 Lambda 表达式。

这里就介绍这么多,有需要的小伙伴请前往官网查看文档。

经验分享 程序员 微信小程序 职场和发展