4

whistle是基于Node实现的跨平台web抓包调试代理工具,本文主要介绍whistle在mock数据上的应用,有关whistle完整介绍可以直接访问Github:https://github.com/avwo/whistle

日常开发调试过程中经常需要自己mock数据,一般mock数据有以下两种方式:

  1. 通过本地文件替换实现
  2. 在公共mock数据平台上构造好数据,再通过指定url访问实现

不管用哪种方式,whistle都有很大的用处。

文件替换

whistle不仅支持普通的文件或目录替换,也支持jsonp请求的替换,且可以通过插件实现更复杂的功能:

  1. 通过filexfile协议实现本地替换功能:

    # 替换整个域名的请求
    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

    更多匹配方式及规则可以参考:匹配方式协议列表

  2. 通过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})

  3. 如果要在本地实现更复杂的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


avwu
137 声望17 粉丝

单纯的程序员