答案
Whistle 提供了多种方式来管理配置规则,包括通过 Web 界面、命令行和配置文件进行管理,支持团队协作和版本控制。
配置规则管理方式
1. Web 界面管理
访问管理界面:
shellhttp://127.0.0.1:8899/
操作步骤:
- 点击 "Rules" 标签
- 在编辑器中添加或修改规则
- 点击 "Save" 保存规则
- 规则立即生效
优点:
- 可视化操作,直观易用
- 实时预览规则效果
- 适合快速调试
2. 命令行管理
启动 whistle:
bash# 启动 whistle w2 start # 指定端口启动 w2 start -p 8080 # 指定配置文件启动 w2 start -f custom.rules
停止 whistle:
bashw2 stop
重启 whistle:
bashw2 restart
查看运行状态:
bashw2 status
3. 配置文件管理
默认配置文件位置:
- Windows:
C:\Users\{username}\.whistle\rules - Mac/Linux:
~/.whistle/rules
配置文件格式:
shell# 注释:这是规则说明 # 基本规则 www.example.com host 127.0.0.1:8080 # 分组规则 # 本地开发 www.local.com host 127.0.0.1:3000 api.local.com host 127.0.0.1:3001 # 测试环境 www.test.com host test.example.com api.test.com host api-test.example.com # 生产环境 www.prod.com host prod.example.com
规则优先级
1. 匹配顺序
Whistle 按照规则在配置文件中的顺序从上到下匹配,一旦匹配成功就不再继续匹配后续规则。
2. 优先级规则
- 精确匹配 > 通配符匹配 > 正则表达式匹配
- 更具体的规则应该放在前面
- 使用
#注释来组织规则
3. 规则示例
shell# 精确匹配(优先级最高) www.example.com/api/user host 127.0.0.1:8080 # 通配符匹配 *.example.com/api/* host 127.0.0.1:8080 # 正则表达式匹配(优先级最低) /^https:\/\/www\.example\.com\/api\/.*/ host 127.0.0.1:8080
团队协作管理
1. 配置文件版本控制
使用 Git 管理配置文件:
bash# 初始化 Git 仓库 cd ~/.whistle git init # 添加配置文件 git add rules # 提交配置 git commit -m "Add whistle rules" # 推送到远程仓库 git remote add origin https://github.com/your-org/whistle-rules.git git push -u origin main
2. 共享配置文件
方法一:通过 Git 共享
- 将配置文件放在 Git 仓库中
- 团队成员克隆仓库
- 使用符号链接到 whistle 配置目录
bash# 克隆配置仓库 git clone https://github.com/your-org/whistle-rules.git ~/whistle-config # 创建符号链接 ln -s ~/whistle-config/rules ~/.whistle/rules
方法二:通过配置文件导入导出
- 导出配置文件
- 通过团队协作工具分享
- 其他成员导入配置
3. 环境配置分离
创建不同环境的配置文件:
shell# 开发环境 rules-dev: www.dev.com host 127.0.0.1:3000 api.dev.com host 127.0.0.1:3001 # 测试环境 rules-test: www.test.com host test.example.com api.test.com host api-test.example.com # 生产环境 rules-prod: www.prod.com host prod.example.com api.prod.com host api-prod.example.com
切换环境:
bash# 使用开发环境配置 w2 start -f rules-dev # 使用测试环境配置 w2 start -f rules-test # 使用生产环境配置 w2 start -f rules-prod
配置管理最佳实践
1. 规则组织
按功能分组:
shell# 本地开发服务 # ==================== www.local.com host 127.0.0.1:3000 api.local.com host 127.0.0.1:3001 # 测试环境 # ==================== www.test.com host test.example.com api.test.com host api-test.example.com # 数据模拟 # ==================== www.example.com/api/user resBody://{mock-user.json} www.example.com/api/list resBody://{mock-list.json}
2. 注释规范
添加清晰的注释:
shell# 用户接口模拟 # 用于前端开发,模拟用户数据 www.example.com/api/user resBody://{mock-user.json} # 跨域处理 # 解决开发环境跨域问题 www.example.com resHeaders://{cors-headers.json}
3. 配置备份
定期备份配置:
bash# 备份当前配置 cp ~/.whistle/rules ~/.whistle/rules.backup.$(date +%Y%m%d) # 恢复配置 cp ~/.whistle/rules.backup.20240101 ~/.whistle/rules
4. 配置验证
验证规则语法:
- 在 Web 界面中检查规则是否高亮
- 查看规则是否生效
- 测试规则是否按预期工作
高级配置管理
1. 使用 Values 文件
创建 Values 文件存储配置:
创建文件:values.json
json{ "local-host": "127.0.0.1", "local-port": "3000", "test-host": "test.example.com", "mock-data": { "user": { "name": "张三", "age": 25 } } }
在规则中使用:
shellwww.example.com host {{local-host}}:{{local-port}}
2. 使用插件扩展配置
开发配置管理插件:
javascriptmodule.exports = function(server, options) { server.on('request', function(req, res) { // 根据环境变量动态配置 const env = process.env.NODE_ENV || 'development'; if (env === 'development') { req.headers['X-Environment'] = 'dev'; } else if (env === 'production') { req.headers['X-Environment'] = 'prod'; } }); };
3. 自动化配置
使用脚本自动配置:
bash#!/bin/bash # auto-config.sh # 获取当前环境 ENV=${1:-dev} # 复制对应环境的配置文件 cp ~/.whistle/rules-$ENV ~/.whistle/rules # 重启 whistle w2 restart echo "Whistle configured for $ENV environment"
使用脚本:
bash./auto-config.sh dev # 配置开发环境 ./auto-config.sh test # 配置测试环境 ./auto-config.sh prod # 配置生产环境
常见问题解决
1. 规则不生效
检查项:
- 确认规则语法正确
- 检查规则优先级
- 确认 whistle 正在运行
- 清除浏览器缓存
2. 配置冲突
解决方法:
- 使用更具体的规则
- 调整规则顺序
- 使用注释标记规则用途
3. 配置文件损坏
恢复方法:
- 从备份恢复
- 重新初始化配置
- 使用版本控制恢复