匹配策略详解
当页面发出请求时,reqable 会按照 Mock 列表顺序逐条匹配规则,并使用第一个命中的 Mock 项替换响应。
四种匹配策略
精确匹配(默认)
最严格的策略,要求 URL(含 query,去除时间戳参数后)和请求体指纹完全一致。
适用场景:同一接口有多种请求参数,需要分别 Mock 不同入参的响应。
请求: POST /api/order/create body: {"type": "A"}
请求: POST /api/order/create body: {"type": "B"}
→ 两条规则互不干扰,各自返回独立的 Mock 数据智能匹配
精确匹配优先,未命中时降级为路径匹配(忽略 query 和请求体)。
适用场景:现场回溯。导出时精确匹配保证还原度,未覆盖到的接口走路径匹配兜底。
已导出: GET /api/list?page=1&size=10 → 返回导出数据
未导出: GET /api/list?page=2&size=20 → 路径匹配命中,返回同一条 Mock路径匹配
仅匹配 URL 路径(忽略 query 参数和请求体),是最宽松的内置策略。
适用场景:对同一接口的所有请求统一返回固定 Mock 数据。
GET /api/list?page=1 → 命中
GET /api/list?page=5 → 命中(`query` 被忽略)自定义匹配
手动组合 URL 匹配方式 与 请求体比对 条件,适合精确匹配、路径匹配、智能匹配无法覆盖的场景。
在 Mock 详情中选择 自定义匹配 后,点击 自定义匹配规则 打开配置弹窗。弹窗内可配置:
URL 匹配方式(四选一)
| 模式 | 匹配范围 | 典型场景 |
|---|---|---|
| 完整 URL | 比较完整 URL(含 query、hash) | 同一 path 下不同 query 需要不同 Mock |
| 端点 URL | 只比较 path,忽略 query、hash | 同接口不同参数统一返回一份 Mock |
| 包含 | 当前 URL 包含指定片段即命中 | path 中含动态 ID、动态前缀 |
| 正则 | 对 URL 字符串做正则匹配 | 复杂 path 规则;输入正则内容即可,无需包裹 / |
选择 包含 或 正则 时,需额外填写对应的关键词或正则表达式。
请求体比对
| 开关 | 行为 |
|---|---|
| 关闭(默认) | URL 条件命中即返回 Mock |
| 开启 | URL 命中后,还要求请求体指纹与规则一致 |
忽略域名匹配
忽略域名 不是四种匹配策略之一,而是 Mock 详情「匹配规则」区域的独立开关,与策略选择并列,对所有匹配策略生效。
| 状态 | URL 比较方式 |
|---|---|
| 关闭 | 比较完整域名 + path(及 query 等,取决于 URL 匹配方式) |
| 开启 | 只比较 path(及 query 等),不比较 origin |
适用场景:本地、测试、预发等不同域名访问同一接口 path 时,共用一条 Mock,无需为每个环境各建一条规则。
规则 URL: https://test.example.com/api/order/list
关闭忽略域名 → 仅 test 域名命中
开启忽略域名 → localhost / test / staging 等同 path 均可命中TIP
忽略域名只影响 URL 部分的比较,不改变匹配策略本身。例如「精确匹配 + 忽略域名」仍会比对 query 和请求体,只是跳过域名比较。
新建规则是否默认忽略域名由 设置 → Mock 默认策略 决定;初始默认值为开启。
匹配计算细节
URL 处理
匹配前会自动进行以下标准化:
- 相对路径转绝对路径
- 剔除设置中声明的时间戳参数(如
_t、timestamp)
不同模式对 Query 顺序的处理不同:
- 精确匹配和请求指纹计算会先对
Query参数排序,因此仅参数顺序不同仍可命中 - 包含和正则匹配使用去除时间戳参数后的 URL 字符串,不额外调整剩余参数顺序
- 路径匹配不参与
Query比较
请求体指纹
启用请求体比对时,会对请求体计算哈希指纹:
JSON请求体:解析后序列化为稳定字符串再计算- 其他类型:直接使用原始内容
方法匹配
每条规则可配置方法匹配模式:
- 匹配全部方法 — 不区分
GET/POST/PUT/DELETE等 - 匹配指定方法 — 仅匹配创建时记录的 HTTP 方法
默认策略配置
在 设置面板 → Mock 默认策略 中可配置新建规则时的默认策略。
修改后需手动点击「应用到当前分组」或「应用到全部 Mock」才会同步到已有规则。
