一个轻量级的http框架——Forest

目录

 

1.入门

什么是forest?

为什么使用forest?

Forest 如何使用?

Forest 的工作原理

Forest 的架构

所需环境

2.安装

Spring Boot项目

Spring项目

非Spring普通项目

添加JSON框架依赖

3.快速上手

Hello World

发送请求

在 Spring Boot 项目中调用接口


1.入门

什么是forest?

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

为什么使用forest?

使用 Forest 就像使用类似 Dubbo 那样的 RPC 框架一样,只需要定义接口,调用接口即可,不必关心具体发送 HTTP 请求的细节。同时将 HTTP 请求信息与业务代码解耦,方便您统一管理大量 HTTP 的 URL、Header 等信息。而请求的调用方完全不必在意 HTTP 的具体内容,即使该 HTTP 请求信息发生变更,大多数情况也不需要修改调用发送请求的代码。

Forest 如何使用?

Forest 不需要您编写具体的 HTTP 调用过程,只需要您定义一个接口,然后通过 Forest 注解将 HTTP 请求的信息添加到接口的方法上即可。请求发送方通过调用您定义的接口便能自动发送请求和接受请求的响应。

Forest 的工作原理

Forest 会将您定义好的接口通过动态代理的方式生成一个具体的实现类,然后组织、验证 HTTP 请求信息,绑定动态数据,转换数据形式,SSL 验证签名,调用后端 HTTP API(httpclient 等 API)执行实际请求,等待响应,失败重试,转换响应数据到 Java 类型等脏活累活都由这动态代理的实现类给包了。 请求发送方调用这个接口时,实际上就是在调用这个干脏活累活的实现类。

Forest 的架构

 

 

所需环境

Forest 1.0.x 和 Forest 1.1.x 基于 JDK 1.7, Forest 1.2.x及以上版本基于 JDK 1.8

2.安装

Spring Boot项目

若您的项目基于Spring Boot,那只要添加下面一个 maven 依赖便可。

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

Spring项目

若您的项目基于非Spring Boot的普通Spring项目,则需添加 Forest 核心包依赖和 Forest Spring 包依赖

<dependency>
    <groupId>com.dtflys.forest</groupId>
    <artifactId>forest-core</artifactId>
    <version>1.5.2-BETA</version>
</dependency>

<dependency>
    <groupId>com.dtflys.forest</groupId>
    <artifactId>forest-spring</artifactId>
    <version>1.5.2-BETA</version>
</dependency>

 

非Spring普通项目

若您的项目既非Spring Boot也非普通Spring项目,只需添加 Forest 核心包依赖

<dependency>
    <groupId>com.dtflys.forest</groupId>
    <artifactId>forest-core</artifactId>
    <version>1.5.2-BETA</version>
</dependency>

添加JSON框架依赖

如果您的项目中还没有JSON解析框架,如FastjsonJackson,请根据需要添加以下依赖。如果已经有了,可以跳过此步

Fastjson依赖:版本 >= 1.2.48

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.48</version>
</dependency>

Jackson依赖:版本 >= 2.9.10

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.10</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.10</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.10</version>
</dependency>	

 

3.快速上手

Hello World

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

src/main/java/com/yoursite/client/MyClient.java

public interface MyClient {

    @Request(url = "http://localhost:8080/hello")
    String helloForest();

}

通过@Request注解,将上面的MyClient接口中的helloForest()方法绑定了一个 HTTP 请求, 其 URL 为http://localhost:8080/hello ,并默认使用GET方式,且将请求响应的数据以String的方式返回给调用者。

发送请求

若您已有定义好的 Forest 请求接口(比如名为 com.yoursite.client.MyClient),那就可以开始愉快使用它了。

在 Spring Boot 项目中调用接口

只要在Spring Boot的配置类或者启动类上加上@ForestScan注解,并在basePackages属性里填上远程接口的所在的包名

src/main/java/MyApp.java

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

 Forest 会扫描@ForestScan注解中basePackages属性指定的包下面所有的接口,然后会将符合条件的接口进行动态代理并注入到 Spring 的上下文中。

 

1.5.1以后版本可以跳过此步,不需要 @ForestScan 注解来指定扫描的包范围

然后便能在其他代码中从 Spring 上下文注入接口实例,然后如调用普通接口那样调用即可。

@Component
public class MyService {
    @Autowired
    private MyClient myClient;

    public void testClient() {
        String result = myClient.helloForest();
        System.out.println(result);
    }
}

想要了解更多的进阶操作,可以关注下面这个公众号,然后在公众号中输入forest

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值