【Forest】基于Forest的http客户端框架对接第三方
Forest
Forest
是一个开源的Java HTTP 客户端框架,它能够将
HTTP 的所有请求信息(包括 URL、Header 以及 Body 等信息)绑定到您自定义的
Interface 方法上,能够通过调用本地接口方法的方式发送 HTTP
请求。
使用 Forest
就像使用类似 Dubbo 那样的 RPC 框架一样,只需要定义接口,调用接口即可,不必关心具体发送
HTTP 请求的细节。同时将 HTTP
请求信息与业务代码解耦,方便您统一管理大量 HTTP 的
URL、Header 等信息。而请求的调用方完全不必在意 HTTP 的具体内容,即使该
HTTP 请求信息发生变更,大多数情况也不需要修改调用发送请求的代码
官方网站:forest.dtflyx.com
Gitee托管仓库:gitee.com/dromara/for…
Github托管仓库:github.com/dromara/for…
引入
1 | <dependency> |
调用高德地图服务
声明高德地图的接口
1 | public interface AmapClient { |
控制器
1 |
|
响应结果
1 | { |
模拟与客户服务对接
这里假设我们为A系统,客户的系统为B系统,当我们系统都能在公网上正常访问,又假设A系统的资源与B系统的资源是有关联的,我们可以将提供一些可调用的接口(服务)给对方,为了保证双方系统的数据安全,双方需要协定秘钥算法有效期等规则(此处忽略)
例子背景
A系统采用了spring Security 框架做了认证授权, B系统则无任何认证授权
A系统:http://localhost:8723
B系统:http://localhost:8081
A系统调用B系统
B系统服务
课程详情 :http://localhost:8081/test/course/detail?courseId=12
课程列表 :http://localhost:8081/test//course/list
A系统设置B系统服务
1 | /** |
A系统调用B系统服务
1 |
|
响应
1 | { |
B系统调用A系统
A系统采用了Spring
Security框架做认证授权,A系统给B系统提供一个权限合适的账号,B系统在调用A系统的其他资源之前,
通过这个账号去调用A系统认证接口
获取对应的token,并在调用A系统的其他资源时,在请求头携带这个token
A系统服务
- 权限合适的账号:admin 123
- 认证接口:http://localhost:8724/hw/login/user/login
- 资源接口:http://localhost:8724/z-self/api/bill/{id}
B系统设置A系统服务
1 | /** |
B系统调用A系统服务
1 |
|
响应
1 | { |
