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
一个栗子
定义请求接口
public interface MyClient { @Get("http://localhost:8080/hello") String helloRequest(); }
发送请求
// 注入自定义的 Forest 接口实例 @Resource private MyClient myClient; public void testClient() { // 调用自定义的 MyClient 接口方法 // 等价于发送 HTTP 请求,请求地址和参数即为 helloRequest 方法上注解所标识的内容 String result = myClient.helloRequest(); // result 即为 HTTP 请求响应后返回的字符串类型数据 System.out.println(result); }
文档和示例
- 项目官网
- JavaDoc
- Demo 工程
本次更新
- [新增]: 在使用 OkHttp3 后端情况下,允许Query参数不转义大括号 (#I5ITW9)
- [新增]: 在使用 OkHttp3 时绕过空 Multipart 错误 (#I5I1AC)
- [修复]: 默认自动绕过SSL验证
- [修复]: 声明的接口返回类型如果是String(或其他Charsequencel类型)导致自定义converter (#I5L2P6)
- [修复]: okhttp后端自动将charset=UTF-8转成了小写 (#I5L4AS)
- [修复]: url域名信息参数赋值会自动参数后添加”/“符号路径导致错误 (#I5I62P)
- [修复]: URL路径中的$字符会被转义
- [修复]: 请求的ForestURL的ssl属性没有继承类里@BaseRequest的ssl信息 (#I5HXHX)
- [更新]: spring 版本到
5.3.19
- [更新]: spring boot 版本到
2.6.7
还没有评论,来说两句吧...