答案
Whistle 的规则语法非常简洁直观,基本格式为:pattern operator-uri
基本规则格式
shellpattern operator-uri
- pattern:匹配模式,可以是域名、路径、正则表达式等
- operator:操作符,指定要执行的操作类型
- uri:目标地址或参数
常用操作符
-
host:修改请求的 Host 头shellwww.example.com host 127.0.0.1:8080 -
reqHeaders:修改请求头shellwww.example.com reqHeaders://{custom-headers.json} -
resHeaders:修改响应头shellwww.example.com resHeaders://{cors-headers.json} -
resBody:修改响应体shellwww.example.com resBody://{mock-data.json} -
resReplace:替换响应内容shellwww.example.com resReplace://old-string/new-string -
reqScript:使用脚本处理请求shellwww.example.com reqScript://{request-handler.js} -
resScript:使用脚本处理响应shellwww.example.com resScript://{response-handler.js} -
forward:转发请求到指定地址shellwww.example.com forward https://api.example.com
匹配模式示例
-
精确匹配域名
shellwww.example.com operator-uri -
通配符匹配
shell*.example.com operator-uri -
路径匹配
shellwww.example.com/api/* operator-uri -
正则表达式
shell/^https:\/\/www\.example\.com\/api\/.*/ operator-uri
规则优先级
Whistle 按照规则在配置文件中的顺序从上到下匹配,一旦匹配成功就不再继续匹配后续规则。因此,更具体的规则应该放在前面。
注释和分组
- 使用
#添加注释 - 使用
# group-name创建分组,便于管理大量规则