You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Postman中基于上一请求响应构建异步轮询工作流?

无需修改服务器响应,Postman即可实现异步请求自动轮询

完全可以直接借助Postman的测试脚本实现需求,不用单独提取job-id字段,也不用修改服务器返回内容,具体实现如下:

1. 给初始异步请求添加测试脚本

在返回202状态码的那个请求的「Tests」标签页中,粘贴以下脚本:

// 仅在返回202时触发轮询逻辑
if (pm.response.code === 202) {
    // 从响应头中获取轮询地址和重试间隔
    const pollingUrl = pm.response.headers.get('location');
    const retrySeconds = parseInt(pm.response.headers.get('retry-after')) || 5; // 若retry-after缺失,默认5秒重试

    // 保存关键参数到环境变量(可选,方便后续调试)
    pm.environment.set('pollingUrl', pollingUrl);
    pm.environment.set('retryInterval', retrySeconds);

    // 定义轮询函数
    const pollJobStatus = () => {
        pm.sendRequest({
            url: pollingUrl,
            method: 'GET',
            // 直接复用当前请求的所有认证信息(OAuth、API Key、Basic Auth等)
            auth: pm.request.auth,
            // 排除Host头避免重复设置导致的错误
            header: pm.request.headers.filter(h => h.key.toLowerCase() !== 'host')
        }, (err, response) => {
            if (err) {
                console.error('轮询失败:', err.message);
                return;
            }

            if (response.code === 200) {
                // 任务完成,可将结果保存到环境变量供后续使用
                console.log('异步任务执行完成:', response.json());
                pm.environment.set('jobFinalResult', JSON.stringify(response.json()));
            } else {
                // 未完成,按照retry-after间隔继续轮询
                setTimeout(pollJobStatus, retrySeconds * 1000);
            }
        });
    };

    // 首次延迟后启动轮询
    setTimeout(pollJobStatus, retrySeconds * 1000);
}

2. 核心特性说明

  • 自动复用凭证:通过pm.request.auth直接继承初始请求的认证配置,不用再为轮询请求单独设置权限
  • 遵循服务器重试规则:严格按照retry-after头指定的间隔发起轮询,避免无效请求
  • 灵活终止条件:当前以返回200作为轮询终止标志,你可以额外添加轮询次数上限(比如加个计数器,超过15次就停止)

3. 可选:集合运行器可视化方案

如果需要更直观的流程管理,也可以把流程拆成两个请求放在集合里:

  1. 发起异步任务请求:在Tests中把location和retry-after存入环境变量
  2. 轮询状态请求:URL填写{{pollingUrl}},在「Pre-request Script」中添加延迟:
    const interval = pm.environment.get('retryInterval') || 5;
    pm.request.delay(interval * 1000);
    
    然后在Tests中判断响应码,若不是200,就设置集合运行器继续迭代该请求(需在集合运行器中开启迭代并设置足够的次数)

内容的提问来源于stack exchange,提问作者benjamingranados

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:30:42