Skip to content

URL 改写

此页面由 docs/rules/url-manipulation.md 自动同步生成。

本章介绍动态修改请求 URL 的规则。


添加或修改 URL 查询参数。

pattern urlParams://key=value # 内联格式(单个参数)
pattern urlParams://(key:value) # 小括号格式(无空格)
pattern urlParams://{varName} # 引用内嵌值(推荐)

⚠️ 注意

  1. {name} 是引用内嵌值的语法,不是直接定义 JSON!
  2. 小括号内不能有空格,含空格内容必须使用块变量
Terminal window
# 内联格式添加单个参数
www.example.com urlParams://debug=true
# 小括号格式(无空格)
www.example.com urlParams://(version:2)
# 引用内嵌值(多个参数,推荐)
www.example.com urlParams://{my-params}

内嵌值定义:

``` my-params
version: 2
lang: zh
```
Terminal window
# API 版本控制
www.example.com/api urlParams://api_version=v2
# 添加认证参数(使用模板变量需要反引号 + 引用内嵌值)
www.example.com urlParams://`{auth-params}`
# 调试模式
www.example.com urlParams://debug=1
# A/B 测试
www.example.com urlParams://experiment=variant_b
Terminal window
# 动态参数(使用模板变量需要反引号)
www.example.com urlParams://`t=${now}&id=${randomUUID}`
# 或者使用内嵌值(推荐)
www.example.com urlParams://`{time-params}`
``` time-params
t: ${now}
id: ${randomUUID}
```
测试场景规则原始 URL预期 URL
添加单个参数test.com urlParams://debug=truehttp://test.com/apihttp://test.com/api?debug=true
添加到已有参数test.com urlParams://b=2http://test.com/api?a=1http://test.com/api?a=1&b=2
覆盖已有参数test.com urlParams://a=newhttp://test.com/api?a=oldhttp://test.com/api?a=new
小括号格式test.com urlParams://(x:1)http://test.com/http://test.com/?x=1

替换 URL 路径中的内容。

pattern pathReplace://old=new
pattern pathReplace://(/regex/=replacement)
Terminal window
# 简单替换
www.example.com pathReplace://v1=v2
# 正则替换
www.example.com pathReplace://(/v\d+/=v3)
# 删除路径部分
www.example.com pathReplace://api/=
Terminal window
# API 版本迁移
www.example.com pathReplace://v1=v2
# 路径重写
www.example.com pathReplace://old-service=new-service
# 环境切换
www.example.com pathReplace://prod=staging
# 移除前缀
www.example.com pathReplace://prefix/=
Terminal window
# 替换所有版本号
www.example.com pathReplace://(/\/v\d+\//=/v999/)
# 捕获组替换
www.example.com pathReplace://(/\/users\/(\d+)/=/api/user/$1)
# 大小写不敏感
www.example.com pathReplace://(/\/API/i=/api)
测试场景规则原始路径预期路径
简单替换test.com pathReplace://old=new/old/path/new/path
版本替换test.com pathReplace://v1=v2/api/v1/users/api/v2/users
正则替换test.com pathReplace://(/v\d+/=v99)/api/v1/users/api/v99/users
删除部分test.com pathReplace://prefix/=/prefix/api/api

URL 操作规则可以与其他规则组合:

Terminal window
# URL 参数 + 路由
www.example.com urlParams://debug=true host://debug-server.local
# 路径替换 + 响应修改
www.example.com pathReplace://v1=v2 resHeaders://X-Api-Version=v2
# 多个 URL 操作
www.example.com pathReplace://old=new urlParams://migrated=true
# 配合过滤器
www.example.com urlParams://test=1 includeFilter://h:X-Test

  1. 参数编码:参数值会自动进行 URL 编码
  2. 参数覆盖:同名参数会被覆盖,而非追加
  3. 路径替换顺序:替换按照规则定义顺序执行
  4. 正则性能:复杂正则可能影响性能