Forest v1.5.28发布!声明式 HTTP 框架

软件服务 创建于:2023-05-29

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);

官网和仓库地址

官网地址:

http://forest.dtflyx.com

Gitee 仓库地址:

https://gitee.com/dromara/forest

Github 仓库地址:

https://github.com/dromara/forest

本次更新内容

  • 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() 结果不正确

原文地址:https://www.oschina.net/news/218790/forest-1-5-28-released#comments

免责声明:本文来源于互联网,版权归合法拥有者所有,如有侵权请公众号联系管理员

* 本站提供的一些文章、资料是供学习研究之用,如用于商业用途,请购买正版。

Dromara开源组织