Forest 介绍
Forest 是一个开源的 Java HTTP 客户端框架,它可能将 HTTP 的所有申请信息(包含 URL、Header 以及 Body 等信息)绑定到您自定义的 Interface 办法上,可能通过调用本地接口办法的形式发送 HTTP 申请
Forest 如何应用
Forest 不须要您编写具体的 HTTP 调用过程,只须要您定义一个接口,而后通过 Forest 注解将 HTTP 申请的信息增加到接口的办法上即可。申请发送方通过调用您定义的接口便能主动发送申请和承受申请的响应
Forest 的工作原理
Forest 会将您定义好的接口通过动静代理的形式生成一个具体的实现类,而后组织、验证 HTTP 申请信息,绑定动态数据,转换数据模式,SSL 验证签名,调用后端 HTTP API(httpclient 等 API)执行理论申请,期待响应,失败重试,转换响应数据到 Java 类型等脏活累活都由这动静代理的实现类给包了。申请发送方调用这个接口时,实际上就是在调用这个干脏活累活的实现类
取得奖项
2021 年度 OSC 中国开源我的项目评比「最受欢迎我的项目」
相干链接:
https://www.oschina.net/proje…
重点更新内容
对立连接池
不必再别离定义 OkHttp 和 Httpclient 的连接池了,也不必放心异步申请和同步申请不在同一个连接池的懊恼了
本次更新对立连接池,能够通过 max-connections 和 max-route-connections 属性对立治理 OkHttp 和 HttpClient 所有后端的所有申请的最大申请数和最大每路由申请数,同时也包含异步申请在内能够一起进行限度
参数定义返回类型
当接口办法返回的是未知参数的泛型类型时,能够通过新增的 @Return
参数注解,来标识某个参数为返回类型
// 通过 Class 类型参数来标识返回类型
@Get("/user/info")
<T> T getGenericClass(@Return Class<T> clazz);
// 通过 Type 类型参数来标识返回类型
@Get("/user/info")
<T> T getGenericType(@Return Type type);
// 通过 TypeReference 类型参数来标识返回类型
@Get("/user/info")
<T> T getGenericTypeReference(@Return TypeReference<T> typeReference);
官网和仓库地址
官网地址:
http://forest.dtflyx.com
Gitee 仓库地址:
https://gitee.com/dromara/forest
Github 仓库地址:
https://github.com/dromara/fo…
本次更新内容
新增个性
- feat: 对立连接池 (#I5APJA)
- feat: 可配置异步申请线程池队列大小 (#I5B78X)
- feat: 反对通过参数定义返回类型 (#I5ANZL)
修复问题
- fix: spring 5.1 以下的低版本启动失败
- fix: 申请地址中蕴含 #字符会被本义导致资源找不到 (#I59O7M)
- fix: 配置 BaseRequest 的 baseURL 属性后, 残缺申请门路中的默认端口号会被笼罩, 导致申请失败 (#I4YBDV)
- fix: 解决当 @body 注解在对象上标识当前,char&Character 类型的属性无奈从客户端传输至服务端问题
- fix: kotlin 我的项目启动异样 (#I50PDZ)
- fix: RetryWhen 重试条件接口在最初一次重试后会执行两次 (#I599BT)
其它改变
- update: #I5ANZR 删除单元测试代码中的 Log4j2 依赖
特地鸣谢
本次更新参加奉献的小伙伴
- @xiao4852
此文章版权归属 dromara 开源组织所有(https://dromara.org/)