欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

程序员文章站 2024-03-21 20:42:58
...

3.2 其他接口

3.2.1 查询多行

通过主键查询多行

GET /api/表名/bulk

GET http://127.0.0.1:3000/api/ecs_goods_type/bulk?_ids=4,5,6

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

3.2.2 添加多行

同时插入多行数据

POST /api/表名/bulk

以 json 方式构建请求报文

POST http://127.0.0.1:3000/api/ecs_goods_type/bulk

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

3.2.3 删除多行

同时删除多行。

DELETE /api/表名/bulk

DELETE http://127.0.0.1:3000/api/ecs_goods_type/bulk?_ids=10,11

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

3.2.4 过滤重复的行 distinct

GET /api/表名/distinct?_fields=列名

指定列名排除该列重复的行。

3.2.5 直接执行 SQL 语句

POST /dynamic

SQL 语句写在body中

可以通过 dynamic接口,直接编写SQL语句。

但是此接口仅对 xmysql 服务在数据库服务器上启动有效,也就是说,参数 -h 必须指定 -h localhost 或者-h 127.0.0.1。如果是通过 xmysql 远程访问数据库的话,是不能执行 SQL 语句的。

post 方法的 body 有两个字段:queryparams

query: SQL 查询语句,或者是SQL 准备语句 (使用 ?? and ? 进行参数占位)

params : 与 SQL 准备语句配合起来使用,为 ?占位提供参数值

SQL 语句:

POST http://127.0.0.1:3000/dynamic

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

SQL 准备语句:

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

4. 条件

4.1 使用 Where 条件

我们在编写 SQL 语句时,会使用 where 条件来过滤。xmysql 也支持 where 条件,只是通过参数的方式实现的。

GET /api/表名?_where=(列名,条件运算符,值)

使用 _where作为参数名后面的值为查询条件,查询条件括号中有三个值,分别是:列名条件运算符比如大于、小于等,判断条件的值。

比如下面的例子:

GET http://172.31.18.163:3000/api/ecs_goods?_where=(shop_price, gt, 1000)

上面的例子,是从 ecs_goods查询 shop_price大于 1000的商品。

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

详细的条件运算符:

eq      -   '='         -  (colName,eq,colValue)
ne      -   '!='        -  (colName,ne,colValue)
gt      -   '>'         -  (colName,gt,colValue)
gte     -   '>='        -  (colName,gte,colValue)
lt      -   '<'         -  (colName,lt,colValue)
lte     -   '<='        -  (colName,lte,colValue)
is      -   'is'        -  (colName,is,true/false/null)
in      -   'in'        -  (colName,in,val1,val2,val3,val4)
bw      -   'between'   -  (colName,bw,val1,val2) 
like    -   'like'      -  (colName,like,~name~)   note: 使用 ~ 代替 %
nlike   -   'not like'  -  (colName,nlike,~name~)  note: 使用 ~ 代替 %

另外还有逻辑运算符:

~or     -   'or'
~and    -   'and'
~xor    -   'xor'

举个例子,查询 shop_price大于 1000 ,并且goods_name诺基亚开头。

GET http://172.31.18.163:3000/api/ecs_goods?_where=(shop_price,gt,1000)~and(goods_name,like,诺基亚~)

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

4.2 使用 fields 指定结果列

由于ecs_goods表字段太多,影响我们对结果的查询和使用。在 SQL 语句中,我们可以指定结果中的列。 Xmysql 中,也可以通过 _fields字段指定结果中的列。

以上面的例子为例。

GET http://172.31.18.163:3000/api/ecs_goods?_where=(shop_price,gt,1000)&_fields=goods_id,goods_name,shop_price

查询 shop_price大于1000的商品,只查看 goods_id,goods_name,shop_price 三个字段。

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

4.3 指定不显示的列

如果你想某字段不在结果中展示,可以在字段名前加负号来指定不展示的列。

GET http://172.31.18.163:3000/api/ecs_goods?_fields=-goods_name

比如不想在结果中展示goods_name,只需要在前面加一个负号即可。

5. 分页

如果查询结果的条数特别多,则需要分页查看。

分页主要使用两个参数

_p 指定显示的页数,页数会根据查询到的数量除以_size
_size 指定返回的行数

GET 请求默认只返回表中的 20 条记录,并且最大返回记录为 100 条。

通过设置 _size 可以改变查询记录的条数。最大只能返回 100 条。

如果设置的条数大于100,则只会返回100条;

如果设置的条数小于等于0,则会返回默认的20条。

GET http://127.0.0.1:3000/api/ecs_goods?_size=15&_p=3&_fields=goods_id,goods_name

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

6. 排序

排序通过 _sort关键字指定排序的字段即可。如果要按倒序排,则在字段前加 负号。

正序 ASC:

GET http://127.0.0.1:3000/api/ecs_goods?_fields=goods_id,goods_name&_sort=goods_id

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

倒序 DESC

GET http://127.0.0.1:3000/api/ecs_goods?_fields=goods_id,goods_name&_sort=-goods_id

注意:字段名前面加 - 负号。

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

多重排序

可以多列结合起来排序,用逗号分隔即可。

GET http://127.0.0.1:3000/api/ecs_goods?_fields=goods_id,goods_name,shop_price&_sort=shop_price,-goods_id

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

8. 聚合

8.1 GroupBy 分组

Xmysql 中只支持聚合函数的 count 函数。所以我们只能分组统计条数。类似这样的 SQL 语句:

-- 根据品牌分组,查看每个品牌包含的商品数量
select brand_id, count(*) as _count from ecs_goods group by brand_id

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

通过 Xmysql 实现的话,可以通过 groupby 接口进行分组查询,通过内置的参数_fields指定分组的字段。

GET /api/表名/groupby?_fields=分组的字段

GET http://127.0.0.1:3000/api/ecs_goods/groupby?_fields=brand_id

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

还有一种 ugroupby 接口,同样是分组统计,只是返回的结果格式不一样,对比一下。

GET http://127.0.0.1:3000/api/ecs_goods/ugroupby?_fields=brand_id

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

接下来是使用 having 了,SQL 语句如下:

select brand_id, count(*) as _count from ecs_goods group by brand_id having _count>2

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

8.2 having 筛选

加上_having参数,就可以实现聚合函数筛选

_having 参数后面的值中跟随的值分别是 (聚合函数, 条件运算符,值)

注意:根据官方文档,目前只支持 count 函数,用 _count表示

GET http://127.0.0.1:3000/api/ecs_goods/groupby?_fields=brand_id&_having=(_count,gt,2)

[用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)

8.3 其他聚合函数

其他聚合函数,比如 avg 求平均, min最小值,max最大值,sum求和,stddev标准差,variance方差。都是由一个接口aggregate构成。

用法为指定一个数字类型的字段,一次性得出这些聚合函数的计算结果。

GET /api/表名/aggregate?_fields=数值型字段

比如对于商品表,指定聚合计算shop_price:

http://127.0.0.1:3000/api/ecs_goods/aggregate?_fields=shop_price

用 Postman 做接口自动化(十五)xmysql 辅助操作 mysql 数据库(二)