pm.sendRequest是Postman中唯一可在Pre-request Script里发起HTTP请求的方法,需用async/await处理异步、手动配置请求参数、显式设置超时、检查错误,并通过await解析响应体,开启权限后才能访问headers和cookies。

Postman里怎么用pm.sendRequest发前置接口
不能靠“Pre-request Script”区域自动发另一个接口——它本身不支持直接发起 HTTP 请求,必须显式调用 pm.sendRequest。这个函数是唯一能在脚本里主动发请求的方式,但默认不阻塞,容易导致后续逻辑读不到响应。
-
pm.sendRequest是异步的,必须用async/await或.then()处理返回值,否则pm.variables.set可能写入 undefined - 请求体、header、认证等都得手动拼,不会继承当前请求的设置(比如 Bearer Token 不会自动带上)
- 超时默认 0(无限),线上调试建议显式设
timeout: 10000,避免卡死 - 错误不会抛出异常,要检查
err参数或response.code >= 400
前置接口返回值怎么安全存到变量里
很多人直接 pm.variables.set('token', response.json().access_token),结果运行时报错说 response.json is not a function——因为 response.json() 是 Promise,没 await 就执行了。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- 必须用
await response.json()或response.text()解析响应体 - 建议加 try/catch 包裹整个
pm.sendRequest调用,防止前置失败导致主请求也挂掉 - 如果前置接口返回的是
Set-Cookie,Postman 不会自动带进后续请求,得手动提取并设到pm.cookies.set - 变量作用域注意:用
pm.environment.set写入环境变量,比pm.variables.set更稳妥,后者在某些版本里生命周期不明确
多个前置请求怎么串起来不乱序
一个常见需求是:先登录 → 拿 token → 再调用获取用户信息接口 → 把 user_id 存变量。这时候不能写两个独立的 pm.sendRequest,必须链式等待。
- 用
async function包一层,然后await每次请求,顺序就稳了 - 别用
for循环直接 await 多个请求——会串行变慢;真要并发,用Promise.all([req1, req2]),但要注意错误传播机制 - Postman 的 Pre-request Script 执行完才发主请求,所以所有 await 必须在这个脚本里完成,不能“丢给后台线程”
- 调试时可在控制台打
console.log(response.code),但注意输出不实时,要等整个脚本跑完才刷出来
为什么pm.sendRequest有时拿不到响应头或 cookie
不是 bug,是 Postman 的默认行为:它只把响应体和状态码暴露给脚本,headers 和 cookies 需要手动开启访问权限。
- 要在请求配置页勾选 “Send request headers with the request” —— 这个选项其实影响的是脚本里能否读
response.headers,名字有误导性 -
response.headers.get('X-RateLimit-Remaining')才能取特定头,不能直接response.headers['X-RateLimit-Remaining'] - cookie 必须用
pm.cookies.jar().set()主动注入,且 domain/path 要配对,否则后续请求发不出去 - 如果前置接口用了重定向(302),
pm.sendRequest默认不跟随,得自己处理 Location 头再发一次

















