Forest v1.5.28发布!声明式 HTTP 框架
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/project/top_cn_2021
简单的栗子
创建一个 interface,并用@Get
注解修饰接口方法。
public interface MyClient { @Get("http://localhost:8080/hello") String hello(); }
通过@Get
注解,将上面的 MyClient 接口中的 simpleRequest() 方法绑定了一个 HTTP 请求, 其 URL 为http://localhost:8080/hello
,并默认使用 GET 方式,且将请求响应的数据以 String 的方式返回给调用者
新增特性
声明式接口可返回 ForestFuture<T>
类型
public interface MyClient { // 声明一个返回ForestFuture类型的异步请求 @Get(url = "/data/{id}", async = true) ForestFuture<String> getData(@Var("id") Integer id); }
调用返回ForestFuture<T>
类型异步请求方法的时候,可用async/await接口
// 发起异步请求 ForestFuture<String> future = myClient.getData(100); // 不阻塞线程,可以做些其它事情 doSomething(); // 等待获取响应结果 String result = future.await().get(String.class);
官网和仓库地址
官网地址:
Gitee 仓库地址:
https://gitee.com/dromara/forest
Github 仓库地址:
本次更新内容
- feat: #I4WF5Q 拦截器新增 onBodyEncode 回调函数
- feat: #I62BTW 隐式转换带 BasicAuth 认证信息的请求
- feat: 声明式接口可返回
ForestFuture<T>
类型- fix: #I61NPK 下载文件,从URL中取得文件名时前后双引号的问题
- fix: 参数为空,导致空指针问题 (110)
- fix: @HttpClient 和 @OkHttp3 注解在 1.5.27 失效的问题
- fix: SpringSSLKeyStore构造方法缺少参数导致SpringBoot项目启动失败
- fix: #I5WEBC Null Pointer Error 当指定RetryWhen
- fix: #I5WC6U @BaseRequest里的 connectTimeout和readTimeout没效果
- fix: 接口上@Address注解的basePath设置为完整URL时,request.basePath() 结果不正确

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Yao 0.10.2 正式发布 你好零代码
无代码开发平台是可以让程序设计者及一般用户不用传统程序设计语言即可以开发应用程序的开发平台,使用的是图形用户界面(GUI)以及配置。(维基百科) 在一些特定场景中, 使用图形界面开发, 确实可以有效的提升程序开发的生产力, 也有很多优秀的实践案例。 然而, 这种开发效率提升, 是以牺牲通用性、无法精确掌控逻辑、应用必须与平台深度绑定、存在数据泄露风险、甚至无法掌控业务数据为代价。 不仅如此, 应对一些常见场景, 通过 ”托拉拽“ 编程更低效。 比如: 一张数据表有 100 个字段, 使用托拉拽配置一个数据管理表格。 一个业务系统有 200 张数据表, 使用图形界面配置出管理后台。 在没有数据分析平台的前提下, 一个业务指标统计涉及到多张表查询和复杂的数据处理。 ... Yao 没有采用大力出奇迹的办法, 而是换了一个新思路, 去解决这些问题。 Yao v0.10.2 重构了界面引擎、新增 Studio CLI、DSL 编写处理器, 发布了 Yao Brain 平台 (DEMO 版)。 基于这些新特性, 开发者可以轻松根据上下文逻辑, 用程序编程序, 开发出 真无代码 产品。 Yao A...
- 下一篇
Oracle Linux 8.7 正式 GA
Oracle Linux 8.7 上周正式发布了 GA 版本,支持 64 位英特尔、AMD (x86_64),以及 64 位 Arm (aarch64) 架构平台。与所有的 Oracle Linux 版本一样,此版本与相应 RHEL 版本 100% 应用二进制兼容。 对于 64 位英特尔和 AMD 架构,Oracle Linux 提供了两个内核选项,即 Unbreakable Enterprise Kernel (UEK) 和兼容红帽的内核 (RHCK)。在 Arm 平台上,Oracle Linux 只提供 UEK。 新版本值得关注的变化集中在安全和高可用性方面,通过简化任务管理和规模化运维,让客户能够更有效地管理其系统。 安全 升级网络安全服务库 (Network Security Services, NSS),可将所有 RSA 操作的最小密钥长度设置从 128 位设置为 1023 位 更符合 DISA 对 Oracle Linux 8 的 STIG 要求,这属于更新的 scap-security-guide 包的一部分 高可用性 为 Pacemaker 引入增强功能,包括 "mul...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16