组合重放升级:同一 API 批量测不同入参

组合重放升级:同一 API 批量测不同入参

接口调试里,有一个高频但繁琐的需求:同一个 API,想快速跑多组不同的参数——正常流程、边界值、异常输入,各测一遍,对比响应是否符合预期。

以前你可能得在抓包历史里反复找同一条请求,手动改参数、点重放、记结果,一组一组来。组合重放(Combo Replay)本来就是为「多请求编排」设计的,但在实际使用中,我们发现它离「批量测同一 API」还差几步。这次更新,我们把这几步补上了。

ApiCatcher | 组合重放使用场景

这次解决了什么问题

组合重放可以把多个 HTTP/HTTPS 请求编排成一条流程,按依赖关系自动串行或并行执行。它的典型用途有两类:

  1. 链路联调——先登录,再带 Token 调业务接口(依赖注入)
  2. 批量验证——同一接口用不同入参,一次性跑完(并行重放)

第二类场景在测试里非常常见,但之前用起来有些别扭。本次更新围绕这个场景做了三项改进。

改进一:同一 API 可以添加多次

早期版本里,组合重放不允许选择同一个 API 的请求重复添加——这是为了避免用户误操作,但也挡住了「同接口多 case」这个正当需求。

现在已取消这一限制。 你可以把同一个 POST /api/order 添加三次,分别代表正常下单、库存不足、非法金额三种场景。三个节点之间不建立依赖关系,执行时会并行发出,跑完一眼对比各节点的成功/失败状态即可。

POST /api/order  节点1  →  body: {"amount": 100, "type": "normal"}
POST /api/order  节点2  →  body: {"amount": 0,   "type": "edge"}
POST /api/order  节点3  →  body: {"amount": -1,  "type": "invalid"}
(无依赖 → 并行执行)

如果场景之间有先后顺序——比如必须先登录再调业务接口——仍然可以通过设置依赖来串行执行,行为与之前一致。

改进二:编辑规则时即可「预设参数」

同一 API 加了三个节点,参数怎么设?如果在执行页临时改,每次进入都要重新改一遍,没法沉淀成固定的测试 case。

现在在编辑组合重放规则时,点击节点菜单新增了 「预设参数」 入口。你可以为每个节点独立设置查询参数、请求头、请求体,保存后写入规则,下次打开还在。

ApiCatcher | 预设参数

预设参数的编辑界面与执行页的「修改请求」一致,体验统一。两者的区别如下:

预设参数(编辑页)修改请求(执行页)
入口节点菜单 → 预设参数执行页点击节点
持久化写入规则,长期有效仅本次执行,不写回规则
用途固定测试 case临时微调再跑

改进三:表达式注入,动态参数不再手改

有些参数没法写死——时间戳每次都要是当前值,请求 ID 需要 UUID,Token 要在多个节点间共用但又不想每个节点单独改。

这次新增了 表达式注入。在设置请求参数时(查询参数、请求头、请求体),使用 ${...} 语法,执行重放时会自动替换:

内置方法:

表达式替换结果
${method.timestamp()}当前时间戳(毫秒)
${method.uuid()}UUID(小写)
${method.date()}当天日期,如 2026-07-29
${method.time()}当前时间,如 14:30:00
${method.datetime()}日期时间,如 2026-07-29 14:30:00

全局变量:

使用 ${token}${appId} 等非 method. 开头的表达式,即为全局变量。当规则中检测到这类表达式时,执行页状态栏(「总节点 / 成功 / 失败」那一行)最右侧会出现 🌐 按钮。点击后填写各变量的值,保存后随规则持久存储,除非删除规则。

ApiCatcher | 表达式注入

表达式注入在预设参数执行页修改请求中均可用。一个组合示例:

Header:  X-Request-Id: ${method.uuid()}
Query:   ts=${method.timestamp()}
Body:    {"token": "${token}", "userId": "123"}

执行前在 🌐 中填写 token 的实际值,时间戳和 UUID 则每次执行自动生成。

参数处理的执行顺序

如果同时使用了预设参数、表达式注入和依赖注入,实际发送请求前的处理顺序为:

预设参数 / 修改请求
        ↓
   表达式注入(${method.timestamp()} 等)
        ↓
   依赖注入(参数映射)
        ↓
     发送 HTTP 请求

一个完整的例子

假设你要测试登录接口的三种输入:

  1. 进入组合重放,创建规则
  2. 从抓包历史添加三次 POST /api/login
  3. 分别给三个节点设置预设参数(正常账号 / 密码错误 / 空密码)
  4. 不建立依赖 → 保存规则
  5. 进入执行页,点击「执行重放」
  6. 执行完成后点击各节点,查看请求/响应详情

如果还需要动态 requestId,在 body 里加上 "requestId": "${method.uuid()}" 即可,无需每次手动填写。

ApiCatcher | 执行组合重放

与依赖注入的配合

本次更新聚焦在「同 API 批量测试」场景,依赖注入能力保持不变——仍然适合登录链式调用、上下游参数传递等场景。两者可以组合使用:并行节点测边界入参,串行节点跑业务流程,动态参数用表达式,Token 用依赖注入或全局变量,各取所长。

更详细的操作步骤、依赖关系说明和常见问题,见 组合重放使用教程

版本要求

  • iOS:>= 3.13
  • Android:>= 1.2.0
  • macOS/Windows:暂不支持

如果你已经在用组合重放做接口联调,这次升级应该能少做很多重复的手动改参。欢迎试用,有问题随时反馈。