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

Postman预请求脚本sendRequest未传请求体提示refresh必填如何修复

问题根因

后端返回"refresh":["This field is required."]说明请求传递的refresh字段为空,或请求体格式不符合后端要求,结合给出的代码有以下几个明确错误:

修复方案
  • 请求体没有序列化为JSON字符串:Postman的pm.sendRequest不会自动将JS对象转换为JSON格式的请求体,直接传对象会导致后端解析不到字段
  • 环境变量取值未做类型转换:从Postman环境变量取出的值默认是字符串格式,和数字类型的Date.now()比较逻辑会出错,同时要兜底refresh_token为空的场景
  • 状态码判断逻辑错误:!res.status.code === 400受运算符优先级影响,实际执行逻辑是(!res.status.code) === 400,结果永远为false,就算请求成功也不会正确更新令牌
  • 响应数据未解析:接口返回的响应是字符串格式,直接取res.access会得到undefined,需要先解析为JSON对象

修复后的完整代码
// 转换令牌过期时间为数字,兜底判断如果没取值成功直接认为过期
var tokenExpireTime = Number(pm.environment.get("token_expiration_time")) || 0
const refreshToken = pm.environment.get("refresh_token")
// 提前判断refresh_token为空的情况,避免无效请求
if (!refreshToken) {
    console.error("环境变量refresh_token为空,请先配置")
    return
}
if (Date.now() > tokenExpireTime) {
    const postRequest = {
        url:  pm.variables.get("auth_url"), 
        method: 'POST',
        headers: {"Content-Type": "application/json"},
        // 将JS对象序列化为JSON字符串
        body: JSON.stringify({
            "refresh": refreshToken
        })
    }
    pm.sendRequest(postRequest, (err, res) => {
        console.log(res.text())
        // 修正状态码判断逻辑
        if (res.status.code !== 400 && !err) {
            // 先解析响应为JSON对象
            const resData = res.json()
            pm.environment.set("access_token", resData.access)
            const tokenCreateTime = Date.now()
            pm.environment.set("token_created_time", tokenCreateTime)
            pm.environment.set(
                "token_expiration_time", 
                tokenCreateTime + parseInt(pm.environment.get("access_token_expiration_delta")) - 5000
            )
        }
    })
}

额外验证步骤

修复代码后如果还有问题,按以下顺序排查:

  • 打开Postman控制台,查看打印的refresh_token值是否正确
  • 确认环境变量auth_url、access_token_expiration_delta配置正确无拼写错误
  • 手动用相同的refresh_token值调用刷新令牌接口,确认后端接口本身逻辑正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:06:03