跳转到正文

匹配策略详解

当页面发出请求时,reqable 会按照 Mock 列表顺序逐条匹配规则,并使用第一个命中的 Mock 项替换响应。

四种匹配策略

精确匹配(默认)

最严格的策略,要求 URL(含 query,去除时间戳参数后)和请求体指纹完全一致。

适用场景:同一接口有多种请求参数,需要分别 Mock 不同入参的响应。

text
请求: POST /api/order/create  body: {"type": "A"}
请求: POST /api/order/create  body: {"type": "B"}
→ 两条规则互不干扰,各自返回独立的 Mock 数据

智能匹配

精确匹配优先,未命中时降级为路径匹配(忽略 query 和请求体)。

适用场景:现场回溯。导出时精确匹配保证还原度,未覆盖到的接口走路径匹配兜底。

text
已导出: GET /api/list?page=1&size=10 → 返回导出数据
未导出: GET /api/list?page=2&size=20 → 路径匹配命中,返回同一条 Mock

路径匹配

仅匹配 URL 路径(忽略 query 参数和请求体),是最宽松的内置策略。

适用场景:对同一接口的所有请求统一返回固定 Mock 数据。

text
GET /api/list?page=1  → 命中
GET /api/list?page=5  → 命中(`query` 被忽略)

自定义匹配

手动组合 URL 匹配方式请求体比对 条件,适合精确匹配、路径匹配、智能匹配无法覆盖的场景。

在 Mock 详情中选择 自定义匹配 后,点击 自定义匹配规则 打开配置弹窗。弹窗内可配置:

URL 匹配方式(四选一)

模式匹配范围典型场景
完整 URL比较完整 URL(含 queryhash同一 path 下不同 query 需要不同 Mock
端点 URL只比较 path,忽略 queryhash同接口不同参数统一返回一份 Mock
包含当前 URL 包含指定片段即命中path 中含动态 ID、动态前缀
正则URL 字符串做正则匹配复杂 path 规则;输入正则内容即可,无需包裹 /

选择 包含正则 时,需额外填写对应的关键词或正则表达式。

请求体比对

开关行为
关闭(默认)URL 条件命中即返回 Mock
开启URL 命中后,还要求请求体指纹与规则一致

忽略域名匹配

忽略域名 不是四种匹配策略之一,而是 Mock 详情「匹配规则」区域的独立开关,与策略选择并列,对所有匹配策略生效

状态URL 比较方式
关闭比较完整域名 + path(及 query 等,取决于 URL 匹配方式)
开启只比较 path(及 query 等),不比较 origin

适用场景:本地、测试、预发等不同域名访问同一接口 path 时,共用一条 Mock,无需为每个环境各建一条规则。

text
规则 URL: https://test.example.com/api/order/list
关闭忽略域名 → 仅 test 域名命中
开启忽略域名 → localhost / test / staging 等同 path 均可命中

TIP

忽略域名只影响 URL 部分的比较,不改变匹配策略本身。例如「精确匹配 + 忽略域名」仍会比对 query 和请求体,只是跳过域名比较。

新建规则是否默认忽略域名由 设置 → Mock 默认策略 决定;初始默认值为开启。

匹配计算细节

URL 处理

匹配前会自动进行以下标准化:

  • 相对路径转绝对路径
  • 剔除设置中声明的时间戳参数(如 _ttimestamp

不同模式对 Query 顺序的处理不同:

  • 精确匹配和请求指纹计算会先对 Query 参数排序,因此仅参数顺序不同仍可命中
  • 包含和正则匹配使用去除时间戳参数后的 URL 字符串,不额外调整剩余参数顺序
  • 路径匹配不参与 Query 比较

请求体指纹

启用请求体比对时,会对请求体计算哈希指纹:

  • JSON 请求体:解析后序列化为稳定字符串再计算
  • 其他类型:直接使用原始内容

方法匹配

每条规则可配置方法匹配模式:

  • 匹配全部方法 — 不区分 GET / POST / PUT / DELETE
  • 匹配指定方法 — 仅匹配创建时记录的 HTTP 方法

默认策略配置

设置面板 → Mock 默认策略 中可配置新建规则时的默认策略。

修改后需手动点击「应用到当前分组」或「应用到全部 Mock」才会同步到已有规则。

Released under the MIT License. · [隐私政策](/privacy) · [服务条款](/terms) · 联系:[arktomson99@gmail.com](mailto:arktomson99@gmail.com)