接口测试辅助工具sql2json使用说明书
sql2json
使用 go 开发的本地 WEB 服务器,允许将 sql 语句执行结果转换为 json 输出。 可以用于 PostMan 等测试软件测试接口时的数据校验,要求测试人员会编写相应的 SQL 语句。 支持 windows、Linux、Mac 等主流操作系统。
以下以 Mac 版本的命令行版本进行说明,实际使用的时候请根据操作系统使用合适的可执行文件。 下载地址: https://yujinping.top/files/sql2json.zip
输出规范
WEB 输出 JSON 格式数据,SQL 执行结果为返回 JSON 数组
{
"code": 200,
"message": "",
"data": []
}
参数说明
直接执行可执行文件,将打印可用参数及默认值
./bin/sql2json_mac
Usage of ./bin/sql2json_mac:
--https-cert-file="": https协议支持cert证书文件
--https-key-file="": https协议支持key文件
--log-level="info": 日志级别,支持:debug,info,error
--mysql-db="test": mysql数据库名称
--mysql-host="localhost": mysql主机
--mysql-pass="": mysql连接的密码
--mysql-port=3306: mysql端口号
--mysql-user="root": mysql连接的用户
--port=8080: 启动的WEB服务端口号
--start=false: 启动WEB服务器
可以传递相应的参数进行配置,使用--start
参数启动服务
当需要支持 https 协议的时候,需要指定 key 和 cert 文件
启动服务
如下命令将使用默认参数配置启动一个支持 http 协议的 WEB 服务器:
./bin/sql2json_mac --start
此时将启动一个默认 8080 端口,访问 localhost:3306/test 的数据库的 WEB 服务。 若数据库配置不是默认值,请使用指定的参数变更。
SQL 请求
WEB 服务默认提供POST {{host}}/sql/select
服务接收 SQL 查询语句,此时 host=http://localhost:8080
,即:
POST http://localhost:8080/sql/select
需要 POST 如下格式的 JSON body:
{
"sql": "SELECT * FROM test"
}
假设你的 test 数据库中有个 test 表:
CREATE TABLE `test` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
当如上的 POST 请求完成时,将返回如下格式的 JSON 数据:
{
"code": 200,
"message": "",
"data": [
{
"id": 1,
"name": "test-中文测试",
"create_time": "2020-03-15 01:02:03"
},
{
"id": 2,
"name": "admin",
"create_time": "2020-03-16 11:22:33"
}
]
}
PostMan 测试接口动态变量
当使用 PostMan 测试时,可以在 body 的 json 中插入 PostMan 的变量。 例如有 PostMan 变量 id=1,则:
{
"sql": "SELECT * FROM test WHERE id={{id}}"
}
最后服务器端将执行:
SELECT * FROM test WHERE id=1
并返回 JSON:
{
"code": 200,
"message": "",
"data": [
{
"id": 1,
"name": "test-中文测试",
"create_time": "2020-03-15 01:02:03"
}
]
}