1. 说明
客户可使用此对外API接口操作平台数据,使用需通过token来调用,token可进行对接口的授权,对接口进行统一的管理。此文档从三个方面讲解:
- 前端配置
- 后端调用
- 逻辑实现
2. 接口调用步骤
比如现在有一个客户端,需要调用平台的接口,我们需要先在系统中新增一个客户端,这个客户端可以配置接口的 clientId (系统生成)、 clientSecret、token生效时长,并且可以对其进行接口授权,允许客户端访问指定的接口。
2.1 系统配置
2.1.1 授权配置中心
填写数据:【名称】【过期时长】【密钥】【是否记录日志】【是否启用】
点击【更多】->【明细】按钮,查看【应用ID】和【密钥】,这两个数据为获取token的关键
2.1.2 授权接口
点击【授权】按钮,查看授权应用可调用的外部API接口
2.1.3 授权日志
显示调用的日志信息,记录授权应用名称,方法类型,接口路径,持续时间
2.2 接口调用
在接口调用之前需要获取token,在每次调用api接口时传递token。
2.2.1 获取token接口
接口地址:
http://localhost/api/api-system/system/token/genToken
接口方法:
GET
输入参数:
clientId:配置的客户ID
clientSecret :客户密钥
返回数据:
{
success:true,
data:
{
token:"",
expire:7200
}
}
另外token是有过期时间的,这个过期时间实在定义客户端调用的时候进行设置的,因此在过期时间之内,可以不需要调用token接口,这样会提升系统调用的性能。
3. 接口定义
3.1 对外API接口编写
对于API接口,我们定义了以下标准,在编写接口时需要遵循以下标准。在定义对外访问接口时,我们需要使用下面的注解规则对接口定义。通过这个配置,我们在对接口进行授权时,才可以在授权时显示出来。
@RequestMapping: 需要以 /restApi/:alias 为规范编写
@ClassDefine:类的信息定义
title:标题
alias:对应RequestMapping的alias
@MethodDefine:方法的信息定义
title:标题
path:对应接口请求地址
method:对应接口请求类型
params:参数集合
@ParamDefine:参数的信息定义
title:标题
varName:参数名
当实现完之后接口就会在授权接口界面就会显示出来。
3.2 实现代码(使用过滤器实现)
这个代码在 jpaas-gateway 项目下:
com.redxun.gateway.filter.ApiTokenFilter
我们定义了一个过滤器,会验证调用接口是否传递了token,以及token是否有效。
isContainAuthUrl:通过此方法拿到当前授权应用所能调用的所有接口,进行判断是否可以调用。