- 理论上支持所有支持JDBC协议的数据库
- 创建数据源的时候如果选择其他类型,需要用户手动填写JDBC驱动class类和查询所有表的sql,同时将相应的JDBC驱动jar包放入DBApi的
lib
目录下并重启生效(如果是集群模式,每个节点都需要拷贝jar包并重启集群)
- DBApi已经自带mysql/sqlserver/postgreSql/hive/kylin/clickhouse/的驱动包,如果版本不匹配请手动替换
lib
目录下的相应驱动jar包
查询所有表sql
的作用:创建、编辑API的时候,点击选择数据源,会自动展示该数据源下的所有表名称,方便辅助用户编写业务逻辑sql。
由于不同数据库查询所有表名称的方式都不一样,所以需要用户手动去填写这个sql
![](https://camo.githubusercontent.com/7db7a80b87d6b7f3b93960cf9fab14b0acf975fdc08bfe03e8d60c4794e28fdf/68747470733a2f2f667265616b636869636b656e2e67697465652e696f2f696d616765732f64624170692f32303232303331332f6170695f6164642e706e67)
- DBApi的插件分两类,一类是数据转换插件,一类是缓存插件
- 插件需要用户自己编写java代码开发。开发完成后打成jar包,并放入DBApi的
lib
目录下即可以使用
- 插件开发指南
- 有时候sql无法一次性获得自己想要的数据格式,如果用代码对数据进行一些处理转换能更加方便,这时候就要用到数据转换插件。用户自己编写数据转换逻辑的代码。
- 典型场景,比如针对sql查询结果中的用户手机号、银行卡号进行加密脱敏。
- 主要是对查询类API,sql查询结果进行缓存,这样避免频繁的查询数据库,对数据库造成压力。
- 缓存逻辑由用户自己编写,用户可以缓存到redis/mongodb/elasticsearch等等。
- 如果开启了缓存,当从缓存中查询不到数据时,才去数据库查询,同时将结果缓存下来。
![](https://camo.githubusercontent.com/751325e753571fb646c6daef2f7c6849bd85f2233cbc076e46d2d3a32bc1c5ce/68747470733a2f2f667265616b636869636b656e2e67697465652e696f2f696d616765732f64624170692f32303232303331332f64617461736f757263655f6164642e706e67)
![](https://camo.githubusercontent.com/c4e75e15df83592aa4461c44775754fac4f88de9d248a9aa502f8e1f2c55ccb1/68747470733a2f2f667265616b636869636b656e2e67697465652e696f2f696d616765732f64624170692f32303232303331332f6170695f6164645f686967682e706e67)
- 请求路径,这就是将来http请求的路径
- 选择数据源,就是接口执行sql逻辑的数据库地址
- 填入sql ,类似mybatis的动态sql语法,不需要写最外层的
<select>
<update>
标签,参数名用 #{}
${}
表示,可以参考mybatis文档
- 一个sql编写窗口内只能写一条sql
- 点击添加可以新增sql,一个API内可以执行多条sql,最后的多个结果封装后一起返回,比如分页查询,一个接口内既要查询详情也要查询总条数
- 添加参数,参数名称就是sql中的参数名,sql中涉及到的每个参数都要填写
- API分组,选择API所属的分组,这个分组可以将来授权使用
- 访问权限,开放接口可以直接访问,私有接口需要申请token才能访问
- 数据转换,如果需要数据转换,就填写数据转换插件的java类名,不填写表示不转换。插件如果需要传参数就填写参数。
如果一个API内包含多条sql,那么每条sql会对应一个数据转换插件配置,数据转换插件永远是针对单条sql查询结果进行转换
- 缓存,如果需要数据缓存,就填写缓存插件的java类名,不填写表示不开启缓存。插件如果需要传参数就填写参数。
- 可以添加、删除分组
![](https://camo.githubusercontent.com/2c80cef2f2568ccea86718d44b3569cc84f136b2e3918cd306a9a7f5486cc3c8/68747470733a2f2f667265616b636869636b656e2e67697465652e696f2f696d616765732f64624170692f32303231303530322f67726f75702e706e67)
- 在页面快速访问API,查看结果,注意如果是内网部署,您需要手动修改访问的IP、端口为外网IP、端口
![](https://camo.githubusercontent.com/cf71aa7eaa0b7207df8fc695cf7b084ae93bb580be568d19611b522e6d81a7b8/68747470733a2f2f667265616b636869636b656e2e67697465652e696f2f696d616765732f64624170692f32303231303530322f726571756573742e706e67)
- 点击sql填写框右上角的最大化按钮,可以开启sql调试功能
![](https://camo.githubusercontent.com/2b397e263773f8090b4d4afa7e2ce45e1bed9ba7b95a9eb525c72448e8029739/68747470733a2f2f667265616b636869636b656e2e67697465652e696f2f696d616765732f64624170692f32303231303830332f73716c5f72756e2e706e67)
- 如果sql中有参数,在调试的时候,请输入参数
![](https://camo.githubusercontent.com/5103d3713f24d2ec8f5a1e2c8166a0b0a48c7ecf6f1025f021b6f67a129d9918/68747470733a2f2f667265616b636869636b656e2e67697465652e696f2f696d616765732f64624170692f32303231303530322f746f6b656e2e706e67)
![](https://camo.githubusercontent.com/a7d199cee51cf414077dec066bc808e5340419f62598f453f30428b38b729481/68747470733a2f2f667265616b636869636b656e2e67697465652e696f2f696d616765732f64624170692f32303231303530322f746f6b656e5f617574682e706e67)
![](https://camo.githubusercontent.com/be720a6e688fa53c5e1266940db7f02a9ee5638bd810e0aa74e4bdf9d907c071/68747470733a2f2f667265616b636869636b656e2e67697465652e696f2f696d616765732f64624170692f32303231303830332f69702e706e67)
- 可以导出接口文档(markdown格式)
![](https://camo.githubusercontent.com/adbd05d773a23f3d01e7a366f1370107109bf605951b6612001f01d1f71946f5/68747470733a2f2f667265616b636869636b656e2e67697465652e696f2f696d616765732f64624170692f32303231303530322f646f63732e706e67)
- 请求私有接口时,需要把token值放入header的
Authorization
字段中携带,才可以访问成功。(如果是开放接口,不需要设置header)
- 以python为例,访问API的代码示例如下:
import requests
headers = {"Authorization": "5ad0dcb4eb03d3b0b7e4b82ae0ba433f"}
re = requests.post("http://127.0.0.1:8520/API/userById", {"idList": [1, 2]}, headers=headers)
print(re.text)
- 如果您要使用Oracle或者其他类型的数据源,请将相应的jdbc驱动包手动放入DBApi部署后的
lib
目录下(如果是集群部署每个节点都需要手动放入jar包)
- 和mybatis动态sql语法一样,同样支持参数
#{}
、 ${}
,可以参考mybatis文档
,不需要写最外层的<select>
<update>
标签,直接写sql内容
- 注意和mybatis一样,sql里的小于号不要写成
<
,要写成 <
![](https://camo.githubusercontent.com/002b21c478bf89778c7ccbb60cbf79d18d9f223a27b787bcd130df6b7a24d655/68747470733a2f2f667265616b636869636b656e2e67697465652e696f2f696d616765732f64624170692f32303231303530322f6c632e706e67)