whistle是基于Node实现的跨平台web抓包调试代理工具,本文主要介绍whistle在mock数据上的应用,有关whistle完整介绍能够直接访问Github:https://github.com/avwo/whistle。html
平常开发调试过程当中常常须要本身mock数据,通常mock数据有如下两种方式:git
无论用哪一种方式,whistle都有很大的用处。github
whistle不只支持普通的文件或目录替换,也支持jsonp请求的替换,且能够经过插件实现更复杂的功能:web
# 替换整个域名的请求 ke.qq.com file:///usr/xxx/test # windows能够为 ke.qq.com file:///E:\test # 替换指定路径 ke.qq.com/abc file:///usr/xxx/test # windows能够为 ke.qq.com/abc file:///E:\test # 通配符匹配 *.ke.qq.com/test file:///usr/xxx/test # windows能够为 *.ke.qq.com/abc file:///E:\test # 正则匹配 /^https?://ke\.qq\.com/([^?]*)/i file:///usr/xxx/test/$1 # windows能够为 /^https?://ke\.qq\.com/([^?]*)/i file:///E:\test/$1 # 等价与 ^ke.qq.com/** file:///usr/xxx/test/$1 ^ke.qq.com/** file:///E:\test/$1
若是想让whistle自动在某个文件夹列表搜索直到找到匹配文件为止,能够这么配置:windows
ke.qq.com/path file:///usr/xxx/test1|/usr/xxx/test2|/usr/xxx/test3
若是想实现找不到本地匹配文件,直接请求线上资源,能够这么配置(file
-> xfile
):工具
# 能够指定host ke.qq.com/path xfile:///usr/xxx/test1|/usr/xxx/test2|/usr/xxx/test3 10.2.2.3:8787
经过tpl协议实现jsonp替换
文件(/usr/xxx/test/test.txt)的内容:url
// whistle会自动根据url请求参数里面的callback值替换{callback} {callback}({"ec": 0})
Rules的配置:插件
# 配置和上面的file协议相似,只是把协议改为tpl ke.qq.com/path tpl:///usr/xxx/test
上述配置后,请求 https://ke.qq.com/path/test.txt?callback=xxx
会自动匹配文件 /usr/xxx/test/test.txt
并返回 xxx({"ec": 0})
。
公共的mock数据平台,通常的操做方式是先在平台上配置或自动生成数据,如:
{ "filed1": 1, "filed2": 2, "filed3": 3 }
保存时会自动生成一个url: http://mock.oa.com/mock-data?id=xxxxxxx
,经过该url能够直接返回设置好的数据,这时能够经过whistle配置将对应请求转发到指定mock url:
ke.qq.com/cgi-bin/list http://mock.oa.com/mock-data?id=xxxxxxx
也能够自定义插件简化这种配置,如实现插件 whistle.mockid:
ke.qq.com/cgi-bin/list whistle.mockid://xxxxxxx
经过插件whistle.mockid自动设置规则 ke.qq.com/cgi-bin/list http://mock.oa.com/mock-data?id=xxxxxxx
实现简化配置。
更多内容及应用,参考Github:https://github.com/avwo/whistle。