共计 5393 个字符,预计需要花费 14 分钟才能阅读完成。
- GreatSQL 社区原创内容未经受权不得随便应用,转载请分割小编并注明起源。
导语
有时候用 Postman 接口测试须要获取 MySQL 的查问后果做接口输入的校验,这里介绍下 Postman 通过 Restful API 接口拜访 MySQL 的工具 xmysql 的应用办法。
步骤
一、应用 nmp 装置 xmysql
注:npm 的装置和配置自行百度,这里次要讲 xmysql,就不赘述了
C:\Users\wmp>node -v | |
v12.16.3 | |
C:\Users\wmp> | |
C:\Users\wmp> npm install -g xmysql | |
C:\Users\wmp\AppData\Roaming\npm\xmysql -> C:\Users\wmp\AppData\Roaming\npm\node_modules\xmysql\bin\index.js | |
> es5-ext@0.10.59 postinstall C:\Users\wmp\AppData\Roaming\npm\node_modules\xmysql\node_modules\es5-ext | |
> node -e "try{require('./_postinstall')}catch(e){}" | |
+ xmysql@0.5.1 | |
added 131 packages from 68 contributors in 22.806s |
装置完输出 xmysql 能够查看具体参数,同时也示意装置胜利
C:\Users\wmp>xmysql | |
Usage: index [options] | |
Options: | |
-V, --version output the version number | |
-h, --host <n> hostname of database / localhost by default | |
-u, --user <n> username of database / root by default | |
-p, --password <n> password of database / empty by default | |
-d, --database <n> database schema name | |
-r, --ipAddress <n> IP interface of your server / localhost by default | |
-n, --portNumber <n> port number for app / 3000 by default | |
-o, --port <n> port number for mysql / 3306 by default | |
-S, --socketPath <n> unix socket path / not used by default | |
-s, --storageFolder <n> storage folder / current working dir by default / available only with local | |
-i, --ignoreTables <n> comma separated table names to ignore | |
-a, --apiPrefix <n> api url prefix / "/api/" by default | |
-y, --readOnly readonly apis / false by default | |
-c, --useCpuCores <n> use number of CPU cores (using cluster) / 1 by default | |
-h, --help output usage information | |
Examples: | |
$ xmysql -u username -p password -d databaseSchema | |
Error: password for database is missing | |
Error: database name is missing | |
C:\Users\wmp> |
连贯数据库:
xmysql -h host_name -o port -u user_name -p user_password -d database_name
C:\Users\wmp>xmysql -h 192.168.5.103 -u root -p 123456 -o 3301 -d test | |
Generating REST APIs at the speed of your thought.. | |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
Database : test | |
Number of Tables : 3【test 库表的数量】REST APIs Generated : 62【生成的 api 数量】Xmysql took : 0 seconds | |
API's base URL : localhost:3000【api 的拜访形式,端口 3000 能够通过参数 - n 进行批改为其余】- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
xmysql 的默认端口是 3000,上面用 postman 调用 api 的形式试下数据库的增删改查 (注: 在 postman 中执行 sql 语句时,cmd 窗口和 msqll 都不能够敞开)
API Overview
HTTP Type | API URL | Comments |
---|---|---|
GET | / | 获取所有 REST API |
GET | /api/tableName | 列出表的行 |
POST | /api/tableName | 创立一个新行 |
PUT | /api/tableName | 用新行替换现有行 |
POST | /api/tableName/bulk | 创立多行 – 在申请注释中发送对象数组 |
GET | /api/tableName/bulk | 列出多行 – /api/tableName/bulk?_ids=1,2,3 |
DELETE | /api/tableName/bulk | 删除多行 – /api/tableName/bulk?_ids=1,2,3 |
GET | /api/tableName/:id | 按主键检索一行 |
PATCH | /api/tableName/:id | 按主键更新行元素 |
DELETE | /api/tableName/:id | 按主键删除一行 |
GET | /api/tableName/findOne | 作为列表工作,但取得单个记录匹配条件 |
GET | /api/tableName/count | 计算表中的行数 |
GET | /api/tableName/distinct | 表中的不同行 – /api/tableName/distinct?_fields=col1 |
GET | /api/tableName/:id/exists | 是否存在行 |
GET | /api/parentTable/:id/childTable | 获取具备父表外键的子表行列表 |
GET | /api/tableName/aggregate | 汇总数字列的后果 |
GET | /api/tableName/groupby | 按列的后果分组 |
GET | /api/tableName/ugroupby | 应用一次调用按后果进行多个分组 |
GET | /api/tableName/chart | 基于 (min,max,step) 或 (step array) 或 (automagic) 的数值列散布 |
GET | /api/tableName/autochart | 与 Chart 雷同,但会自动识别哪些是数字列 |
GET | /api/xjoin | 解决连贯 |
GET | /dynamic | 应用参数执行动静 mysql 语句 |
GET | /upload | 上传单个文件 |
GET | /uploads | 上传多个文件 |
GET | /download | 下载文件 |
GET | /api/tableName/describe | 形容每个表的列 |
GET | /api/tables | 获取数据库中的所有表 |
GET | /_health | 获取过程和 mysql 的运行状况 |
GET | /_version | 获取 Xmysql、mysql、node 的版本 |
查看对象表下所有可用的接口,能够参数调用并查看后果
http://localhost:3000/
以下是 t1 表可用的接口:
用 t1 表做一个简略的查问测试:
1、查问 t1 的整表数据
GET /api/t1 | |
SQL: select * from `t1` ; |
2、带条件查问
GET /api/t1?_where=(ida,eq,1) | |
SQL: select * from `t1` where `ida`=1; |
3、分页查问
4、in 查问
GET /api/t1/bulk?_ids=1,2,3 | |
SQL: select * from `t1` where `ida` in (1,2,3) limit 0,20; |
其余的增删改参考上述的 API Overview,上面演示下 xmysql 在 postman 接口测试中的利用:
利用一:接口测试数据校验
- 启动 xmysql 服务:(测试时放弃服务启动状态不要敞开)
xmysql -h 192.168.5.103 -u root -p Great@123 -o 3306 -d SCOTT
- 创立 postman 测试 collection,蕴含测试接口和 xmysql 获取 mysql 数据接口
# 测试接口 1:获取全国行政区划 | |
http://127.0.0.1:8369/query?fid={{pregion_code}} | |
#接口 2:xmysql 获取 mysql 数据接口 | |
http://localhost:3000/api/AREAS?_where=(parent_region_code,eq,{{pregion_code}}) |
接口参数化,可在 postman collection 中设置全局参数并赋值
// 定义变量做接口的输出传参并设置为全局变量 | |
var pregion_code=110100; | |
pm.environment.set("pregion_code", pregion_code); |
接口输入参数化设置:
在接口 1Tests 中用 js 脚本对接口输入后果须要断言的局部转参数并设置环境变量,以便在接口 2 的数据库输入中进行比拟
// 返回 body 转 json | |
var jsonData = JSON.parse(responseBody); | |
var list=jsonData.result; | |
var regionCode=[]; | |
num=list.length; | |
for (let i=0;i<num;i++){regionCode.push(list[i].id); | |
} | |
// 设置为全局变量,用于数据库查问接口的数据校验 | |
pm.environment.set("regionCode", regionCode); | |
//console.log(regionCode) |
接口 2Tests 中用 js 脚本对数据库查问到的 json 脚本进行解决,获取须要的数据,参数化后与接口 1 的输入进行比拟
// 返回 body 转 json | |
var jsonData = JSON.parse(responseBody); | |
var res_id=[]; | |
num=jsonData.length; | |
// 获取数据库查问后果的 region_code 列 | |
for (let i=0;i<num;i++){res_id.push(jsonData[i].region_code+''); | |
} | |
// 获取接口 1 输入的后果参数 regionCode | |
var regionCode=pm.environment.get("regionCode"); | |
// 断言 比拟接口和数据库的输入后果 | |
tests["接口断言胜利!!"] = res_id.sort().toString === regionCode.sort().toString ; | |
//console.log(res_id); | |
- 运行测试 collection
利用二:利用 postman+xmysql 实现 MySQL 疾速生成大量测试数据
建表脚本
drop table if exists t1; | |
CREATE TABLE t1 | |
( | |
id int NOT NULL AUTO_INCREMENT PRIMARY KEY comment '用户 ID', | |
person_name varchar(30) comment '用户名称' | |
) |
这里演示插入 10000 条:
- 创立 insert 接口
- 设置 collection 并执行
3、执行结束,查看表数量
调用表行数查问接口查问后果:
申明:xmysql 工具次要用于测试环境,联合接口测试等,次要用于内部测试,在生产还是不倡议应用,因为这款工具会造成重大的数据安全问题。
参考文档:
https://gitee.com/thinkyoung/…
Enjoy GreatSQL :)
文章举荐:
面向金融级利用的 GreatSQL 正式开源
https://mp.weixin.qq.com/s/cI…
Changes in GreatSQL 8.0.25 (2021-8-18)
https://mp.weixin.qq.com/s/qc…
MGR 及 GreatSQL 资源汇总
https://mp.weixin.qq.com/s/qX…
GreatSQL MGR FAQ
https://mp.weixin.qq.com/s/J6…
在 Linux 下源码编译装置 GreatSQL/MySQL
https://mp.weixin.qq.com/s/WZ…
# 对于 GreatSQL
GreatSQL 是由万里数据库保护的 MySQL 分支,专一于晋升 MGR 可靠性及性能,反对 InnoDB 并行查问个性,是实用于金融级利用的 MySQL 分支版本。
Gitee:
https://gitee.com/GreatSQL/Gr…
GitHub:
https://github.com/GreatSQL/G…
Bilibili:
https://space.bilibili.com/13…
微信 &QQ 群:
可搜寻增加 GreatSQL 社区助手微信好友,发送验证信息“加群”退出 GreatSQL/MGR 交换微信群
QQ 群:533341697
微信小助手:wanlidbc
本文由博客一文多发平台 OpenWrite 公布!