whistle规则配置

  在前端开发中,我们经常会遇到各种调试场景,比如:切换接口地址、注入本地资源、模拟接口返回数据等。如果每次都要修改代码或后端配合,无疑会浪费很多时间。这时,一款好用的调试代理工具就显得非常重要。

  Whistle 是一个基于 Node.js 的 Web 调试代理工具,支持请求转发、重定向、本地资源注入、Mock 接口等功能,特别适合前端在开发和联调阶段使用。本文将系统地介绍 Whistle 的安装、启动及常用规则配置,可以更高效地完成代码的调试工作。

简介

Whistle 支持 HTTP/HTTPS/WS/WSS 请求,具备以下核心功能:

  • 本地资源注入(JS、CSS、JSON 等)
  • 请求与响应的头信息修改
  • 接口代理、重定向
  • Mock 接口数据返回
  • 注入脚本、页面覆盖
  • 响应延迟、状态码模拟等

只需要写几条规则,就能大幅度提升调试效率。

安装与启动

安装

1
npm install -g whistle

启动服务

1
2
3
4
# 启动
w2 start
# 关闭
w2 stop

启动后,访问管理界面:http://127.0.0.1:8899 查看和配置规则

规则配置基础

Whistle 的规则结构如下:

1
请求匹配路径  操作指令://参数

比如:

1
www.example.com/app.js  file:///Users/me/app.js

表示将线上 JS 文件替换为本地文件。

常用规则示例

请求重定向

1
www.example.com/index.js  http://127.0.0.1:3000/mock.js

将请求定向到本地 mock 数据。

注入本地资源

1
www.example.com/app.css  file:///Users/you/project/app.css

注入本地样式文件,用于样式调试。

接口代理转发

1
api.example.com/  forward://127.0.0.1:8080/

将接口请求转发到本地服务。

添加请求头

1
api.example.com/  reqHeaders://{ "token": "abc123" }

为请求添加 token 头信息。

修改响应头

1
api.example.com/  resHeaders://{ "Cache-Control": "no-cache" }

修改响应头内容,控制缓存策略等。

Mock 返回内容

1
api.example.com/data.json  resBody://{ "code": 0, "data": [] }

直接返回指定 JSON,无需发起实际请求。

延迟响应模拟慢网速

1
www.example.com/  delay://3000

延迟 3 秒返回,适合测试 loading 效果。

状态码模拟

1
api.example.com/  statusCode://500

模拟接口返回 500 错误,测试异常处理逻辑。

返回 HTML 内容

1
www.example.com/page  resBody://html:<h1>调试中</h1>

直接返回 HTML 页面,适合页面测试。

正则路径匹配

1
/www\.example\.com\/user\/\d+  resBody://{ "id": 1, "name": "mock user" }

匹配 /user/123/user/456 等路径,返回相同数据。

注入 JS/CSS 脚本

1
2
www.example.com/  injectScript://file:///Users/you/debug.js
www.example.com/ injectStyle://file:///Users/you/debug.css

无需改动源代码即可调试页面脚本或样式。

返回本地 JSON 文件内容

1
api.example.com/data.json  file:///Users/you/mock/data.json

用本地 JSON 文件替换接口返回,适合本地 mock。

合并多个请求资源

1
static.example.com/*.js  reqMerge://

合并多个资源请求,适合合并 mock 接口或批量重定向。

组合多个规则

1
www.example.com/  rule://rule1 rule2 rule3

同时激活多个规则组,提升管理效率。

其他建议与技巧

  • 可以在规则中使用通配符 *,例如:*.js 匹配所有 JS 文件
  • 正则匹配需开启右上角「正则匹配」开关
  • 规则越靠上,优先级越高,建议先写精确规则
  • 支持规则导入/导出,方便跨设备使用
  • 建议配合 SwitchyOmegaZeroOmega 设置系统代理,快速切换调试环境
作者

Fu9Zhou

发布于

2025-04-14

许可协议