whistle是基于Node实现的跨平台web抓包调试代理工具,本文主要介绍whistle在mock数据上的应用,有关whistle完整介绍可以直接访问Github:https://github.com/avwo/whistle。
日常开发调试过程中经常需要自己mock数据,一般mock数据有以下两种方式:
- 通过本地文件替换实现
- 在公共mock数据平台上构造好数据,再通过指定url访问实现
不管用哪种方式,whistle都有很大的用处。
文件替换
whistle不仅支持普通的文件或目录替换,也支持jsonp请求的替换,且可以通过插件实现更复杂的功能:
-
# 替换整个域名的请求 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自动在某个文件夹列表搜索直到找到匹配文件为止,可以这么配置:
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)的内容:// 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功能可以自定义插件或通过vase实现,具体参考:https://github.com/whistle-pl...
数据平台
公共的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。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。