前言:
作者简介:短尾巴小鳄鱼 ,一位不放弃自己的上进卷妹
💬 如果文章知识点有错误的地方,请留言指正~和大家一起学习,一起进步
💬 人生格言:昨日种种,皆成今我。今日种种,方成新我。切莫踌躇,莫停留,莫沉溺💬
如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦
一、正则表达式提取器
1. 作用
JSON提取器只能提取响应内容,而正则表达式提取器可以提取响应头、请求头的值,当然也可以提取响应内容。
2. 参数详解
- Apply to:应用范围,选默认的main sample only就行了
- 要检查的响应字段:要提取的字段范围
- 主体:响应体,不包含响应头;最常用
- body(unescaped):响应体,替换了所有HTML转义符;不建议使用
- body as a Document:从不同类型的文件中提取文本;影响性能
- 信息头:响应头
- Requeste Headers:请求头
- URL:URL
- 响应代码:响应码(Response code)
- 响应信息:响应信息(Response message)
- 引用名称:接收提取值的变量名,*必传
- 正则表达式:正则表达式
- 模板:从找到的匹配项中创建字符串的模板
- 如果一条正则表达式有多个提取结果,则提取结果是数组形式
- 模板 1 1 1、 2 2 2…表示把解析到的第几个值赋值给变量,从1开始匹配
- 0 0 0表示整个表达式匹配的内容
- 若只有一个结果,只能是 1 1 1
- 匹配数字(0代表随机):取第几个值(0:随机,默认;-1所有;1第一个值),非必传
- 缺省值:缺省值,匹配不到值的时候取该值,非必传
- Use empty default value:勾选后,提取不到值时,则返回空字符串
参数不好理解,下面来举例子啦~
3. 正则表达式提取器实栗
还是以这个地址的接口来测试哦
http://api.yesapi.cn/docs.php?keyword=%E4%BC%9A%E5%91%98&channel=api
入门实栗:
创建测试计划:
会员登录接口的响应内容:
{"ret":200,"data":{"err_code":0,"err_msg":"","uuid":"F118DD335346CE9D7094C97190587108","token":"C1CA708E57F0C33E548745B0D82ADA2A800D886D17BA44261459C39C52376C0D","role":"user"},"msg":"V3.3.0 YesApi App.User.Login 2022-03-20 10:25:40 hd215"}
正则表达式提取器-提取token:
正则表达式提取器-提取uuid:
- 正则表达式-----
( )
里面写匹配规则,用于解析正则表达式 - 正则表达式-----
.*?
表示匹配任意长度的任意字符,这也是最常用的正则表达式 - 一般(.+?)和(.*?)能够满足我们80%的使用场景
其他接口调用正则表达式提取的变量:
进阶实栗:
测试接口:http://api.yesapi.cn/docs-api-App.User.GetList.html
响应内容:
{
"ret":200,
"data":
{
"err_code":0,
"err_msg":"",
"users":
[
{
"uuid":"F118DD335346CE9D7094C97190587108",
"username":"xey032001",
"role":"user",
"role_desc":"普通会员",
"status":0,
"status_desc":"正常",
"reg_time":"2022-03-20 10:25:40",
"ext_info":
{
"yesapi_avatar":"",
"yesapi_nickname":"",
"yesapi_email":"",
"yesapi_sex":"",
"yesapi_real_name":"",
"yesapi_points":0,
"yesapi_reg_source":"",
"yesapi_reg_note":"",
"yesapi_mobile":"",
"yesapi_expiration_time":""
}
},
{
"uuid":"AAC71046CFA51B8A55D4367652791D66",
"username":"xey04",
"role":"user",
"role_desc":"普通会员",
"status":0,
"status_desc":"正常",
"reg_time":"2022-03-19 13:22:24",
"ext_info":
{
"yesapi_avatar":"",
"yesapi_nickname":"",
"yesapi_email":"",
"yesapi_sex":"",
"yesapi_real_name":"",
"yesapi_points":0,
"yesapi_reg_source":"",
"yesapi_reg_note":"",
"yesapi_mobile":"",
"yesapi_expiration_time":""
}
},
{
"uuid":"97F22D1CD99D17C2CF29510C728F6570",
"username":"xey03",
"role":"user",
"role_desc":"普通会员",
"status":0,
"status_desc":"正常",
"reg_time":"2022-03-19 13:18:56",
"ext_info":
{
"yesapi_avatar":"",
"yesapi_nickname":"",
"yesapi_email":"",
"yesapi_sex":"",
"yesapi_real_name":"",
"yesapi_points":0,
"yesapi_reg_source":"",
"yesapi_reg_note":"",
"yesapi_mobile":"",
"yesapi_expiration_time":""
}
},
{
"uuid":"770A6910AF264AEB73F6ECAFEB5BBFB6",
"username":"xey02",
"role":"user",
"role_desc":"普通会员",
"status":0,
"status_desc":"正常",
"reg_time":"2022-03-19 13:15:35",
"ext_info":
{
"yesapi_avatar":"",
"yesapi_nickname":"",
"yesapi_email":"",
"yesapi_sex":"",
"yesapi_real_name":"",
"yesapi_points":0,
"yesapi_reg_source":"",
"yesapi_reg_note":"",
"yesapi_mobile":"",
"yesapi_expiration_time":""
}
},
{
"uuid":"690815A62298F01009010BA062773A9F",
"username":"xey01",
"role":"user",
"role_desc":"普通会员",
"status":0,
"status_desc":"正常",
"reg_time":"2022-03-19 13:14:03",
"ext_info":
{
"yesapi_avatar":"",
"yesapi_nickname":"",
"yesapi_email":"",
"yesapi_sex":"",
"yesapi_real_name":"",
"yesapi_points":0,
"yesapi_reg_source":"",
"yesapi_reg_note":"",
"yesapi_mobile":"",
"yesapi_expiration_time":""
}
},
{
"uuid":"24249E71ABBD72D7C1DE8B3E95A0FBBE",
"username":"xey",
"role":"user",
"role_desc":"普通会员",
"status":0,
"status_desc":"正常",
"reg_time":"2022-03-19 13:08:25",
"ext_info":
{
"yesapi_avatar":"",
"yesapi_nickname":"",
"yesapi_email":"",
"yesapi_sex":"",
"yesapi_real_name":"",
"yesapi_points":0,
"yesapi_reg_source":"",
"yesapi_reg_note":"",
"yesapi_mobile":"",
"yesapi_expiration_time":""
}
}
],
"total":6
},
"msg":"V3.3.0 YesApi App.User.GetList 2022-03-20 11:16:58 hd215"
}
提取一个值:
正则表达式中只提取一个值,且匹配数字不是-1
-
未填写模板
PS:匹配数字填1,表示如果有多个uuid,则匹配到第一个,这里与JSON提取器相同测试结果:
uuid= uuid_g=1 uuid_g0="uuid":"F118DD335346CE9D7094C97190587108" uuid_g1=F118DD335346CE9D7094C97190587108
可以看到,如果正则匹配到值,但是没有填写模板,则返回空
-
模板写$0$
测试结果:uuid="uuid":"F118DD335346CE9D7094C97190587108" uuid_g=1 uuid_g0="uuid":"F118DD335346CE9D7094C97190587108" uuid_g1=F118DD335346CE9D7094C97190587108
可以看到,如果模板填写的$0$,uuid取的是uuid_g0
-
模板写$1$
测试结果:
uuid=F118DD335346CE9D7094C97190587108 uuid_g=1 uuid_g0="uuid":"F118DD335346CE9D7094C97190587108" uuid_g1=F118DD335346CE9D7094C97190587108
可以看到,如果模板写$1$,uuid取的是uuid_g1
-
模板写$2$(不存在)
测试结果:
uuid=null uuid_g=1 uuid_g0="uuid":"F118DD335346CE9D7094C97190587108" uuid_g1=F118DD335346CE9D7094C97190587108
可以看到,如果模板不存在,uuid为null(即使勾选了使用空默认值,也返回null)
提取多个值:
测试结果:
uuid_1=F118DD335346CE9D7094C97190587108
uuid_1_g=1
uuid_1_g0="uuid":"F118DD335346CE9D7094C97190587108"
uuid_1_g1=F118DD335346CE9D7094C97190587108
uuid_2=AAC71046CFA51B8A55D4367652791D66
uuid_2_g=1
uuid_2_g0="uuid":"AAC71046CFA51B8A55D4367652791D66"
uuid_2_g1=AAC71046CFA51B8A55D4367652791D66
uuid_3=97F22D1CD99D17C2CF29510C728F6570
uuid_3_g=1
uuid_3_g0="uuid":"97F22D1CD99D17C2CF29510C728F6570"
uuid_3_g1=97F22D1CD99D17C2CF29510C728F6570
uuid_4=770A6910AF264AEB73F6ECAFEB5BBFB6
uuid_4_g=1
uuid_4_g0="uuid":"770A6910AF264AEB73F6ECAFEB5BBFB6"
uuid_4_g1=770A6910AF264AEB73F6ECAFEB5BBFB6
uuid_5=690815A62298F01009010BA062773A9F
uuid_5_g=1
uuid_5_g0="uuid":"690815A62298F01009010BA062773A9F"
uuid_5_g1=690815A62298F01009010BA062773A9F
uuid_6=24249E71ABBD72D7C1DE8B3E95A0FBBE
uuid_6_g=1
uuid_6_g0="uuid":"24249E71ABBD72D7C1DE8B3E95A0FBBE"
uuid_6_g1=24249E71ABBD72D7C1DE8B3E95A0FBBE
uuid_matchNr=6
一个正则表达式有多个( ):
-
模板为空:
测试结果:uuid= uuid_g=2 uuid_g0="uuid":"F118DD335346CE9D7094C97190587108","username":"xey032001" uuid_g1=F118DD335346CE9D7094C97190587108 uuid_g2=xey032001
可以看到,如果模板为空,取不到值,uuid为空
-
只有一个模板:
测试结果:uuid=F118DD335346CE9D7094C97190587108 uuid_g=2 uuid_g0="uuid":"F118DD335346CE9D7094C97190587108", "username":"xey032001" uuid_g1=F118DD335346CE9D7094C97190587108 uuid_g2=xey032001
可以看到,如果只有一个模板,取到了uuid_g1
-
有两个模板:
测试结果:uuid=F118DD335346CE9D7094C971q90587108, xey032001 uuid_g=2 uuid_g0="uuid":"F118DD335346CE9D7094C97190587108", "username":"xey032001" uuid_g1=F118DD335346CE9D7094C97190587108 uuid_g2=xey032001
可以看到,uuid取到了两个值uuid_g1和uuid_g2,并且用逗号拼接
注意:
-
引用名称、匹配数字、缺省值只需要填一个即可,不需要跟正则表达式的数量一致
-
也可以用. - 拼接,只要模板也用. 或- 拼接即可,如模板填: 1 1 1- 2 2 2q
-