5月27日 21:38

whistle 的规则语法是什么,常用的操作符有哪些?

规则语法

Whistle 规则的基本格式为 pattern operation [lineProps] [filters],即"匹配模式 + 操作 + 可选配置"。

当请求 URL 匹配 pattern 时,whistle 对其执行 operation 定义的操作。

常用操作符

修改请求/响应:

  • reqHeaders:修改请求头,如 www.test.com reqHeaders://x-token=abc
  • resHeaders:修改响应头,如 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:8080
  • proxy / forward:通过代理或指定地址转发请求

脚本与延迟:

  • reqScript / resScript:用脚本动态处理请求或响应
  • resDelay:模拟响应延迟,如 www.test.com resDelay://3000

匹配模式

按模糊程度从精确到宽泛:

  1. 精确匹配$www.test.com/api — 加 $ 前缀,仅匹配该 URL
  2. 路径匹配www.test.com/api — 匹配该路径下所有请求
  3. 通配符匹配*.test.com^https://**.test.com/**
  4. 正则匹配/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 操作
标签:Whistle