Forest v1.5.26 发布!声明式 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

一个栗子

定义请求接口

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

声明式接口

// 高德地图API
public interface AmapClient {
    /**
     * 根据经纬度查询地址信息
     * 在url中的{0}代表引用第一个参数,{1}引用第二个参数
     */
    @Get("http://ditu.amap.com/service/regeo")
    Map getLocation(@Query("longitude") String longitude, @Query("latitude") String latitude);
}

编程式接口

// 定义各种参数
// 并以 Map 类型接受
Map<String, Object> map = Forest.post("/data")
      .host("localhost")         // 设置地址的host为 127.0.0.1
      .port(8080)                // 设置地址的端口为 8080
      .contentTypeJson()         // 设置 Content-Type 头为 application/json
      .addBody("a", 1)           // 添加 Body 项(键值对): a, 1
      .addBody("b", 2)           // 添加 Body 项(键值对:  b, 2
      .executeAsMap();           // 执行并返回Map数据类型对象

官网和仓库地址

官网地址:

http://forest.dtflyx.com

Gitee 仓库地址:

https://gitee.com/dromara/forest

Github 仓库地址:

https://github.com/dromara/forest

本次更新内容

  • feat: 在使用 OkHttp3 后端情况下,允许Query参数不转义大括号 (#I5ITW9)
  • feat: 在使用 OkHttp3 时绕过空 Multipart 错误 (#I5I1AC)
  • fix: 默认自动绕过SSL验证
  • fix: 声明的接口返回类型如果是String(或其他Charsequencel类型)导致自定义converter (#I5L2P6)
  • fix: okhttp后端自动将charset=UTF-8转成了小写 (#I5L4AS)
  • fix: url域名信息参数赋值会自动参数后添加”/“符号路径导致错误 (#I5I62P)
  • fix: URL路径中的$字符会被转义
  • fix: 请求的ForestURL的ssl属性没有继承类里@BaseRequest的ssl信息 (#I5HXHX)
  • update: 更新 spring 版本到5.3.19
  • update: 更新 spring boot 版本到2.6.7
优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/206120/forest-1-5-26-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。