大家好,对于接口测试,其很重要的一个环节就是要连接数据库,那么对于 Postman 而言,如何进行连接数据库操作呢。但此处,需要用到一个插件:xmysql。通过 xmysql 连库后,xmysql 会将数据库中所有表以 REST 风格的接口形式生成,所以后续访问某张表其实就是访问的某个接口,那么对于 Postman 而言,其实也就是相当于访问了某个接口而已,接下来就一起看一下再 Postman 中如何连接数据库。
一、安装
1、安装 nodejs
xmysql 是由 nodejs 开发,所以要先安装它的运行环境,下载地址:
http://nodejs.cn/download/
2、安装成功后需要验证
在 cmd 窗口中输入:
node -v
如果输出 node 的版本信息,则证明安装成功。
3、安装 xmysql
安装成功 nodejs 后,会自动安装一个包管理工具 npm(类似于 python 中的 pip)。通过它就可以直接安装 xmysql。
打开 cmd 窗口输入:
npm install -g xmysql
二、连接数据库
xmysql 命令参数介绍:
- -h 连接数据库主机名
- -u 连接数据库用户名
- -p 连接数据库密码
- -d 连接数据库名
- -r 连接数据库输入的主机名,无这个选项默认为 localhost
- -n 连接这个服务设置的端口,无这个选项默认为 3000
示例:
xmysql -u username -p password -d databasename
以下为连接本地数据库的示例,注意:在输入下图红框中的这条命令后,xmysql 会以服务的形式启动。所以,当 xmysql 被停止掉,那么连库操作也会失败。
三、数据库的基本操作
以下是某张表 t_book 的数据,可以通过 xmysql 来对这张表分别进行增、删、改、查。
强调:无论何种操作,在 Postman 中只是请求的接口。
1、查询 t_book 表的所有数据
GET http://localhost:3000/api/t_book
2、查询 t_book 表 title 为三国演义的数据
GET http://localhost:3000/api/t_book?_where=(title,eq,三国演义)
3、向 t_book 表插入一条数据
插入数据需要先知道表结构,t_book 的表结构如下图,那么向这张表插入数据,其实就是将这些字段作为参数输入即可。它支持两种请求,表单和 JSON。
Postman 中是这样请求的,如果是修改数据直接把 POST 修改成 PUT 就可以了。
4、删除其中一条数据
// 5 是表中的 ID 值
DELETE http://localhost:3000/api/t_book/5
四、xmysql 用法
1、关系表
xmysql 自动识别外键关系并提供 GET API。
例如:blogs 是父表,comments 是子表。API 调用将产生 blogs 主键 103 的所有注释。
/api/blogs/103/comments
2、分页(_p 和 _size)
p 表示页面,size 表示每页的数据量,默认情况下,每个 GET 请求在一个表上返回 20 条记录,最多返回 100 条记录。
/api/payments?_size=50
/api/payments?_p=2
/api/payments?_p=2&_size=50
当_size 大于 100 时-记录数默认为 100(即最大)
当_size 小于或等于 0 时-记录数默认为 20(即最小值)
3、排序
(1)ASC(升序)
例如:按 column1 升序排序
/api/payments?_sort=column1
(2)降序
例如:按 column1 降序排序
/api/payments?_sort=-column1
(3)多个字段排序
例如:按 column1 升序排序,按 column2 降序排序
/api/payments?_sort=column1,-column2
4、列过滤/字段
例如:在每条记录的响应中仅获取 customerNumber 和 checkNumber
/api/payments?_fields=customerNumber,checkNumber
例如:获取表行中的所有字段,但不获取 checkNumber
/api/payments?_fields=-checkNumber
5、运算符
比较运算符
使用比较运算符:
/api/payments?_where=(checkNumber,eq,JM555205)~or((amount,gt,200)~and
(amount,lt,2000))
逻辑运算符
使用逻辑运算符:
例如:简单的逻辑表达式
/api/payments?_where=(checkNumber,eq,JM555205)~or(checkNumber,eq,OM314933)
例如:复杂的逻辑表达式
/api/payments?_where=((checkNumber,eq,JM555205)~or(checkNumber,eq,OM314933))~and(amount,gt,100)
例如:具有排序(sort),分页(p),列过滤(_fields)的逻辑表达式
/api/payments?_where=(amount,gte,1000)&_sort=-amount&p=2&_fields=customerNumber
例如:使用_where 的行过滤器也可用于关系路由 URL。
/api/offices/1/employees?_where=(jobTitle,eq,Sales%20Rep)
6、查找一条数据
与 list 相似,但仅返回前一个结果。与_where 结合使用
/api/tableName/findOne?_where=(id,eq,1)
7、计数
返回表中的行数
/api/tableName/count
8、判断是否存在
根据记录是否存在返回真或假
/api/tableName/1/exists
9、按查询参数分组
/api/offices?_groupby=country
例如:选择国家/地区,从办事处按国家/地区计数(*)
/api/offices?_groupby=country&_having=(_count,gt,1)
例如:
SELECT country,count(1)as _count FROM office GROUP BY country_count>1
以API分组
例如:选择国家/地区,从办事处按国家/地区计数(*)
/api/offices/groupby?_fields=country
例如:从办事处选择国家,城市,计数(*)GROUP BY 国家,城市
/api/offices/groupby?_fields=country,city
/api/offices/groupby?_fields=country,city&_having=(_count,gt,1)
例如:
SELECT country,city,count(*)as _count FROM office GROUP BY country_city_count> 1
分组依据,排序依据
例如:通过办事处选择国家,城市,数量(*),按国家,城市分组,按城市 ASC
/api/offices/groupby?_fields=country,city&_sort=city
例如:从办事处选择国家,城市,数量(*)按国家分组,按城市 ASC 订购,国家 ASC
/api/offices/groupby?_fields=country,city&_sort=city,country
例如:从办事处选择国家,城市,计数(*)按国家分组,城市按城市 ASC,国家 DESC。
/api/offices/groupby?_fields=country,city&_sort=city,-country
版权归原作者 寒秋丶 所有, 如有侵权,请联系我们删除。