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。