如何在Postman中实现带延时与id传参的双POST请求链式调用
Postman 双接口串行调用实现方案
前置校验
- 确认你已经在第一个POST请求的
Tests脚本中完成返回id的环境变量存储,可以用如下写法避免取值路径出错:const res = pm.response.json(); // 将返回的id存入名为target_id的环境变量,可根据自己的命名调整 pm.environment.set("target_id", res.id); // 打开Postman控制台可看到打印的id值,确认变量写入成功 console.log("已获取的id值为:", pm.environment.get("target_id")); - 确认当前Postman顶部选中的环境配置是激活状态,避免变量写了但没选中生效。
30秒等待逻辑实现
把以下代码追加到第一个请求的Tests面板,接在存id的代码后面:
// 等待30秒后再推进后续请求流程 setTimeout(() => {}, 30000);
注意:该延迟逻辑仅在串行执行全Collection流程(通过Collection Runner、API监视器、Newman调用)时生效,手动单个触发请求时不会卡住等待。
第二个请求的URL参数填充
不需要手动拼接id值,直接在第二个POST请求的URL编辑栏,用Postman的环境变量占位符替换原本需要填id的位置即可。举例说明:
- 假设第二个请求原本的URL格式为
https://api.example.com/order/{id}/confirm - 直接把
{id}替换成环境变量占位符,写成https://api.example.com/order/{{target_id}}/confirm
Postman发起请求时会自动把占位符替换成第一个请求存到环境变量里的id值,无需额外写拼接代码。
执行流程编排
- 在同一个Collection内按顺序排列两个请求:第一个存id的POST请求放在列表上方,第二个带占位符的POST请求放在其下方
- 打开Collection Runner,勾选这两个请求,取消“并行运行(Parallel runs)”选项,保持串行执行逻辑
- 启动Runner后即可自动触发全流程:发第一个请求 → 提取id存为环境变量 → 等待30秒 → 自动替换第二个请求URL中的id值 → 发送第二个请求
常见问题排查
- 若第二个请求发送时id值为空,优先检查第一个请求的Tests脚本取值路径是否和实际返回的JSON结构匹配,同时确认环境变量选中状态正确
- 若30秒等待没生效,检查是否是手动单点击按钮触发的请求,需通过Runner类工具启动全流程才会触发异步等待逻辑
- 可在第一个请求的Tests脚本中增加id非空校验,避免空值触发后续请求:
pm.test("接口返回的id值非空", () => { pm.expect(pm.environment.get("target_id")).to.not.equal(null); });
内容的提问来源于stack exchange,提问作者damnatus
相关产品推荐
相关产品推荐

