即使不运行测试,相信您也能意会到绝大多数 API 的用法。想要了解更多请参考:https://gitee.com/dromara/sa-token。
2. Forest
一款极大程度解放你的 HTTP 接入工作的强大 HTTP 客户端框架。HTTP 协议很复杂吗?那是因为你还没有使用过 Forest,虽然业内有很多其他优秀的HTTP 客户端,但是你错过了 Forest,将会错过一大片优雅美丽的森林。
官方网站:http://forest.dtflyx.com
Gitee托管仓库:https://gitee.com/dromara/forest
Github托管仓库:https://github.com/dromara/forest
Forest 是一个开源的 Java HTTP 客户端框架,用来访问第三方服务 RESTful 接口。
它能够将 HTTP 的请求参数绑定到 Java 接口上,之后调用 Java 接口就等于在发送 HTTP 请求。一切面向于接口。
很多公司需要在 Java 后台调用许多第三方 HTTP 接口,比如微信支付、友盟等等第三方平台。
公司内部还有很多服务是用世界最好语言写的,接口自然也只能通过 HTTP 接口来调用。于是日积月累下来,在 Java 代码中就有许许多多各式各样的 HTTP 调用接口,而且调用方式也不统一,有 HttpClient 写的、有 OkHttp 写的、有自己包装的,光公司内部不同人包装的 HTTP 工具类就有两三种。
而且 url 基本写死在代码中,很难维护,不同接口又有不同的参数传输方式,有 GET 、有 POST,有 JSON 传输的、有 XML 传输的。当有一个接口需要修改,完了,光找到代码在什么地方就要花半天时间。
而 Forest 能帮助我很好地将 HTTP 代码和业务代码解耦开来,请求调用者不必关心 HTTP 相关的细节。
自动拼接 HTTP 的各种参数
包括 URL、Header、Body 等等参数都能依靠 Java 注解来声明。这里就举一个高德地图的栗子,来看看 Forest 是如何优雅的声明 HTTP 请求接口的:
/** * 高德地图服务客户端接口 */@BaseRequest(baseURL = "http://ditu.amap.com")public interface Amap {/** * 根据经纬度获取详细地址 * @param longitude 经度 * @param latitude 纬度 * @return 详细地址信息 */@Get("/service/regeo") Map getLocation(@Query("longitude") String longitude, @Query("latitude") String latitude);}......Amap amap = Forest.client(Amap.class);// 发送请求查询经纬度Map locationInfo = amap.getLocation("32.1242832", "56.3290434");
复制
自动 JSON 和 XML 转换
其实,我们处理 HTTP 的工作时,除了浪费在组装各种请求参数外,大部分时间都花了在序列化和反序列化各种格式的数据上,如 JSON 和 XML。
以前用 HttpClient,这些重复的机械性工作都要自己来搞,很是麻烦。
用 Forest 就方便多了,比如要 POST 一个 JSON 对象,直接挂个 @JSONBody 就好了,就是这么清爽。
// 直接将 MyUserInfo 转换成 JSON// 将服务端响应返回的 JSON 数据转换成 Result 类对象@Post("http://localhost:8080/user")Result createUser(@JSONBody MyUserInfo user);
复制
Copyright 2015-2022 财务报告网版权所有 备案号: 京ICP备12018864号-19 联系邮箱:29 13 23 6 @qq.com