场景
假设我们需要更改数据返回接口中的某一个字段,网页中的代码可能会根据这个字段来更改显示的内容,我们又不想去麻烦后端给我们添加权限,那么就可以使用代理工具直接更改返回的数据包,这里我使用的工具是whistle. 具体的使用方法可以查看官方文档
添加rules
test.xxxx.com/page/query resReplace://{test-resReplace.json}
添加values
test-resReplace.json
{
"\"creator\":\"flyu\"": "creator: \"bravexue\"",
"\"hasAuth\":false": "hasAuth: true"
}
这其中的难点就是values中替换规则的编写,根据我的摸索,whistle会以json文件中的key作为匹配模式,将匹配的结果替换为当前key对应的值。
官网的示列如下,但是这个我真的看了很久都没搞懂。
官网示列的意思大概是,这个json中的key可以为一个正则,key对应的value中可以使用正则中的分组匹配符。但是这里有一个坑,json中的key必须为字符串,如果你直接使用官网的列子是不会生效的,你需要使用双引号将key值包裹起来
{
"/user=([^&])/ig": "user=$1$1"
}
这是第一个坑,我遇到的问题是,我需要将返回结果中的某一个字段直接更改其值,如果我直接进行匹配,是无法生效的。
{
"hasAuth:false": "hasAuth:true"
}
我们以文本的方式查看接口的返回值
会发现返回值实际是 "hasAuth":false 也就是说在hasAuth这个字段两端是有双引号的,问题是json的key值我们已经使用了双引号,而json中又不允许使用单引号,所以此时我们应该怎么办呢,可以使用转译字符
我尝试了如下方法,然后就OK了
{
"\"hasAuth\":false": "hasAuth:true"
}