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

Postman前置脚本请求间变量传递及执行顺序问题解决

解决Postman前置脚本中异步请求顺序与Token传递问题

问题根源

你的脚本里用pm.sendRequest发起的两个请求是异步并行执行的,Token生成请求并没有优先完成,导致用户创建请求发起时,新的accessToken还没生成,只能用旧值或者空值;同时并行执行可能触发两次Token生成逻辑,导致出现两个不同的Token。

解决方案:用async/await控制请求顺序

Postman支持在前置脚本中使用async/await,把异步请求改成串行执行——先等待Token生成请求完成并拿到有效Token,再发起用户创建请求,确保变量传递正确。

修改后的完整脚本

// 1. 生成随机字符串工具函数
function generateRandomString(length) {
    const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    let result = '';
    for (let i = 0; i < length; i++) {
        result += chars.charAt(Math.floor(Math.random() * chars.length));
    }
    return result;
}

// 2. 异步逻辑用async函数包裹,确保顺序执行
(async function() {
    // 优先生成Bearer Token
    const tokenRequest = {
        url: '你的Token接口地址',
        method: 'POST',
        header: {
            'Content-Type': 'application/json'
        },
        body: {
            mode: 'raw',
            raw: JSON.stringify({
                // 你的Token请求参数,比如username、password等
                username: 'test_user',
                password: 'test_pass'
            })
        }
    };

    // 等待Token请求完成,获取accessToken
    const tokenResponse = await pm.sendRequest(tokenRequest);
    const accessToken = tokenResponse.json().access_token;
    // 把Token存到环境变量,方便后续使用
    pm.environment.set('accessToken', accessToken);

    // 3. 生成用户ID并发起创建请求(此时已拿到最新Token)
    const randomUserId = `user_${generateRandomString(8)}`;
    const userCreateRequest = {
        url: '你的用户创建接口地址',
        method: 'POST',
        header: {
            'Content-Type': 'application/json',
            'Authorization': `Bearer ${accessToken}`
        },
        body: {
            mode: 'raw',
            raw: JSON.stringify({
                user_id: randomUserId,
                // 其他用户参数
                name: 'Test User'
            })
        }
    };

    // 发起用户创建请求
    await pm.sendRequest(userCreateRequest);
    // 可选:把创建的用户ID存到环境变量
    pm.environment.set('createdUserId', randomUserId);
})();

关键修改说明

  • 把整个异步逻辑包裹在async自执行函数里,用await等待每个pm.sendRequest完成,确保Token生成请求先执行完毕
  • Token生成后立即存入环境变量,同时直接在用户创建请求的Header中使用最新生成的accessToken,避免变量传递延迟
  • 避免了并行请求导致的重复Token生成问题,确保全程只用一个有效Token

内容的提问来源于stack exchange,提问作者Jyoti Prakash Mallick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:01:55