【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 | { |