Postman进阶功能-连接数据库

发布于:2024-05-30 ⋅ 阅读:(57) ⋅ 点赞:(0)

        大家好,对于接口测试,其很重要的一个环节就是要连接数据库,那么对于 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