5月27日 21:38
whistle 的规则语法是什么,常用的操作符有哪些?
规则语法
Whistle 规则的基本格式为 pattern operation [lineProps] [filters],即"匹配模式 + 操作 + 可选配置"。
当请求 URL 匹配 pattern 时,whistle 对其执行 operation 定义的操作。
常用操作符
修改请求/响应:
reqHeaders:修改请求头,如www.test.com reqHeaders://x-token=abcresHeaders:修改响应头,如www.test.com resHeaders://{cors.json}resBody/resReplace:替换响应体或响应内容
映射与代理:
file:映射到本地文件,如www.test.com/api file://{mock.json}host:修改 Host 指向,如www.test.com host 127.0.0.1:8080proxy/forward:通过代理或指定地址转发请求
脚本与延迟:
reqScript/resScript:用脚本动态处理请求或响应resDelay:模拟响应延迟,如www.test.com resDelay://3000
匹配模式
按模糊程度从精确到宽泛:
- 精确匹配:
$www.test.com/api— 加$前缀,仅匹配该 URL - 路径匹配:
www.test.com/api— 匹配该路径下所有请求 - 通配符匹配:
*.test.com或^https://**.test.com/** - 正则匹配:
/api\/v2/i— 用正则灵活匹配 URL
规则优先级与合并
- 相同 pattern 不同 operation 会合并生效,如
www.test.com resDelay://3000 file://{data.json}同时延迟并返回本地数据 - 相同 pattern 相同 operation 取最前面的规则
- 用
lineProps://important提升单行优先级 - 用
excludeFilter/includeFilter对匹配结果二次过滤
追问
- Whistle 如何实现只对 POST 请求生效?用
includeFilter://m:post过滤请求方法 - 多条规则冲突时如何排查?看 Rules 面板的匹配日志,或用
lineProps://important调整优先级 - Whistle 和 Charles 的核心区别?Whistle 基于规则文件配置、支持脚本和插件,Charles 偏 GUI 操作