查看原文
其他

3.1K Star,推荐一款声明式HTTP客户端框架Forest

Forest 是一个开源的 Java HTTP 客户端框架,它能够将 HTTP 的所有请求信息(包括 URL、Header 以及 Body 等信息)绑定到您自定义的 Interface 方法上,能够通过调用本地接口方法的方式发送 HTTP 请求。

🕵️‍Forest架构

Forest 遵循约定大于配置的理念,大多数情况下不需要进行配置,或填写非常简单的配置即可。但不同项目环境配置方式各有不同,需要根据项目需要,选择不同的环境进行配置。

官网:

https://forest.dtflyx.com/

🎉 优点

🍭 容易上手

10分钟即可完成请求的定义、发送、接收、解析、错误处理、日志打印等过程,此外还有直观的API和详尽的文档

☕ 简单优雅

将繁复的 HTTP 请求细节封装成 Java 接口 + 注解的形式,不必关心请求发送的具体过程

🧩 扩展灵活

能使用自定义拦截器和自定义注解来扩展Forest的能力,即使面对意想不到的场景也能轻松应对

🎉 特性

  • 支持 声明式接口,方便与业务代码解耦

  • 支持 编程式接口,方便快速访问请求

  • 支持底层 HTTP 库: OkHttp 3

  • 支持底层 HTTP 库: Httpclient

  • 不依赖中间件

  • 支持 GETPOST 等所有请求方法

  • 约定大于配置

  • 自动 JSONXMLProtobuf 转换

  • 支持 自定义转换器

  • 多种加签方式

  • 支持 Spring 和 Springboot 集成

  • 支持 上传下载

  • 支持 模板表达式

  • 支持 拦截器

  • 支持 自定义注解

  • 支持 异步请求


🎨 最新版本

<!-- Forest Spring Boot 启动包 --><dependency> <groupId>com.dtflys.forest</groupId> <artifactId>forest-spring-boot-starter</artifactId> <version>1.5.33</version></dependency>
<!-- Forest JAXB 扩展包 --><dependency> <groupId>com.dtflys.forest</groupId> <artifactId>forest-jaxb</artifactId> <version>1.5.33</version></dependency>

🎬 安装配置说明

Forest 可适配集成 Springboot、Spring 等多种不同的项目环境,也可直接在普通的 Java 项目中使用,可以根据项目需要,选择不同的环境进行安装,本文以整合springboot项目为演示案例。

🌰所需环境

JDK版本: 8+可集成的 spring boot 版本: 1.x, 2.x也可不依赖 spring boot 和 spring

1、添加 forest-spring-boot-starter 依赖

<dependency> <groupId>com.dtflys.forest</groupId> <artifactId>forest-spring-boot-starter</artifactId> <version>1.5.33</version></dependency>

2、在application.yaml / application.properties中配置的 HTTP 基本参数

# 连接池最大连接数forest.max-connections=1000# 连接超时时间,单位为毫秒forest.connect-timeout=3000# 数据读取超时时间,单位为毫秒forest.read-timeout=3000

3、配置springboot扫描接口

@SpringBootApplication@Configuration@ForestScan(basePackages = "com.yoursite.client")public class MyApp { ...}

4、创建一个interface,比如命名为MyClient,并创建一个接口方法名为helloForest,用@Get注解修饰之。

public interface MyClient { @Get("http://localhost:8080/hello")      String helloForest();}

5、从Spring上下文注入接口实例,然后如调用普通接口那样调用

@Componentpublic class MyService { // 注入自定义的 Forest 接口实例 @Resource    private MyClient myClient;
public void testClient() { // 调用自定义的 Forest 接口方法 // 等价于发送 HTTP 请求,请求地址和参数即为 helloForest 方法上注解所标识的内容 String result = myClient.helloForest(); // result 即为 HTTP 请求响应后返回的字符串类型数据 System.out.println(result);    }
}

Forest就字面意思而言,就是森林的意思。但仔细看可以拆成For和Rest两个单词,也就是“为了Rest”(Rest为一种基于HTTP的架构风格)。而合起来就是森林,森林由很多树木花草组成(可以理解为各种不同的服务),它们表面上看独立,实则在地下根茎交错纵横、相互连接依存,这样看就有点现代分布式服务化的味道了。最后,这两个单词反过来读就像是RESTful。

git开源地址:

https://gitee.com/dromara/foresthttps://github.com/dromara/forest


点点关注不迷路


关注【爱编程爱技术】公众号
您可能喜欢:
一款全能的下载工具
VeryCapture,一款堪称最强的截图、录制、识别工具!人人必备!
Spring RestTemplate上传文件
IntelliJ Idea2023.1全家桶破解激活教程 附:破解补丁(windows/mac/linux)

CodeGeeX:Tab一下,代码自动生成

继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存