Http Api框架Forest v1.0.0发布

GitHub地址:github.com/mySingleLiv…

码云地址:gitee.com/dt_flys/for…

你还在用HttpClient或OkHttp来发送http请求吗?甚至是用Java原生的java.net包?

不用再那么麻烦了,你现在可以像调用本地方法一样去调用远程rest接口了。

Forest通过动态代理模式将http请求代码业务接口代码,用标注申明http相关信息,这样就能带来很多好处:
1、首先就是解耦。这不用多说了吧,将http请求相关信息(如用POST方法、加什么header之类的信息)和业务代码解耦后好处多多。从此业务代码就不必再关心此接口是如何发送请求的,只需要知道3件事(做什么的;给它什么;给我什么)。
2、然后就是http请求集中化管理。以前项目中http请求代码散乱在各个角落里,同一个项目可能会有两三个不同的http框架同时存在,还有自个对http请求代码的封装。日积月累后代码自然难以管理。而Forest将所有http请求都集中在了接口文件中,而所有请求信息都如清单一般详细罗列在其中。如果调用接口的人用的是Eclipse或Intellij IDEA能很容易跳转到接口方法申明的地方,一眼就能看到HTTP的详细信息,这也是申明式编程的好处。

方法:

  1. 添加Maven依赖
<dependency>
  <groupId>com.squareup.okhttp3groupId>
  <artifactId>okhttpartifactId>
  <version>3.3.0version>
dependency>

<dependency>
    <groupId>com.alibabagroupId>
    <artifactId>fastjsonartifactId>
    <version>1.2.4version>
dependency>

<dependency>
    <groupId>com.dtflys.forestgroupId>
    <artifactId>forest-coreartifactId>
    <version>1.0.0version>
dependency>

<dependency>
    <groupId>com.dtflys.forestgroupId>
    <artifactId>forest-springartifactId>
    <version>1.0.0version>
dependency>
复制代码
  1. 添加一个Interface:
    com.mytest.client.MyClient
package com.mytest.client;

import com.dtflys.forest.annotation.Request;
import com.dtflys.forest.annotation.DataParam;

public interface MyClient {
    /**
     * 百度短链接API
     * @param url
     * @return
     */
    @Request(
        url = "http://dwz.cn/create.php",
        type = "post",
        dataType = "json"
    )
    Map getShortUrl(@DataParam("url") String url);
}

复制代码

此接口会被作为Http请求调用的接口。方法上加上@Requst后才会被视为发送请求的方法。 @Requst中的参数有很多,其中有url(请求地址),type(http请求方法类型),dataType(接受的数据类型)等等。

  1. 在resources目录下添加配置文件forest.xml
xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:forest="http://www.dtflys.com/schema/forest"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.dtflys.com/schema/forest
       http://www.dtflys.com/schema/forest/forest-spring.xsd">

   <forest:configuration
            id="forestConfiguration"
            timeout="30000"
            retryCount="3"
            connectTimeout="10000"
            maxConnections="500"
            maxRouteConnections="500">
    forest:configuration>

    <forest:scan configuration="forestConfiguration"
                 base-package="com.mytest.client"/>
beans>
复制代码

在spring配置文件中加入import标签,把forest.xml导入到spring主配置。当然你直接把上面forest配置直接写在外面的spring配置中也是完全没有问题的,不过别忘了要把上面的xml schema贴过来,不然forest专用的xml标签将无法解析。

  <import resource="classpath:/forest.xml" />
复制代码
  1. 在业务的java Bean中注入MyClient类对象
package com.mytest.service.impl

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mytest.client.MyClient;

public class MyServiceImpl implements MyService {
    
    @Autowired
    private MyClient myClient;
    
}
复制代码

4、然后就直接调用咯


    public void doTest() {
        Map result = myClient.getShortUrl("https://gitee.com/dt_flys/forest");
        System.out.println(result);
    }

复制代码

好了,是不是很简单,祝您码代码愉快 ;-)

GitHub地址:github.com/mySingleLiv…

码云地址:gitee.com/dt_flys/for…

forest微信群:

转载于:https://juejin.im/post/5ba37530f265da0aa06eefb8

你可能感兴趣的:(Http Api框架Forest v1.0.0发布)