禁忌的梦境:在午夜的裂缝中,窥见被放逐的真实自我
在Postman中获取上一个接口执行完后的参数主要有以下几种方法
使用环境变量Environment Variables这是最常用的方法设置变量在第一个接口的Tests中// 解析响应 const responseJson pm.response.json(); // 将需要的值保存到环境变量 pm.environment.set(token, responseJson.token); pm.environment.set(userId, responseJson.data.userId); pm.environment.set(sessionId, responseJson.sessionId); // 也可以保存数组或对象 pm.environment.set(userData, JSON.stringify(responseJson.data));获取变量在第二个接口中// 在URL中使用 // 例如/users//profile // 在请求体中使用 // 在Body的JSON中使用 // 在Headers中使用 // Authorization: Bearer // 在Pre-request Script中获取 console.log(用户ID:, pm.environment.get(userId)); console.log(Token:, pm.environment.get(token)); // 如果是JSON字符串需要解析 const userData JSON.parse(pm.environment.get(userData) || {}); console.log(用户数据:, userData);
使用全局变量Global Variables适用于所有接口共享的数据设置全局变量// 在第一个接口的Tests中 pm.globals.set(globalToken, pm.response.json().access_token); pm.globals.set(apiVersion, v
2.
;获取全局变量// 在第二个接口中 const token pm.globals.get(globalToken); const version pm.globals.get(apiVersion);
使用集合变量Collection Variables适用于当前集合内的接口共享设置集合变量// 在第一个接口的Tests中 pm.collectionVariables.set(collectionToken, responseJson.token);获取集合变量// 在同一个集合的第二个接口中 const collToken pm.collectionVariables.get(collectionToken);
完整示例第一个接口登录接口// 登录接口的Tests标签 pm.test(登录成功, function() { const response pm.response.json(); // 验证状态码 pm.response.to.have.status(
; // 保存token到环境变量 pm.environment.set(accessToken, response.data.accessToken); // 保存用户ID pm.environment.set(currentUserId, response.data.userId); // 保存其他需要的参数 pm.environment.set(userRole, response.data.role); console.log(Token已保存:, response.data.accessToken); console.log(用户ID:, response.data.userId); });第二个接口获取用户信息// 在URL中使用 // /users/ // 在Headers中使用 // Authorization: Bearer // 在Pre-request Script中验证 const token pm.environment.get(accessToken); if (!token) { console.error(Token不存在请先运行登录接口); // 可以停止请求 throw new Error(请先获取token); }
在Pre-request Script中处理在第二个接口的Pre-request Script中可以处理从环境变量获取的数据// 获取上一个接口保存的参数 const token pm.environment.get(accessToken); const userId pm.environment.get(currentUserId); // 动态设置请求头 pm.request.headers.add({ key: Authorization, value: Bearer token }); // 动态修改URL const originalUrl pm.request.url.toString(); pm.request.url originalUrl.replace({userId}, userId); // 动态设置请求体 if (pm.request.body.raw) { const body JSON.parse(pm.request.body.raw); body.userId userId; body.timestamp new Date().toISOString(); pm.request.body.raw JSON.stringify(body); }
使用数据变量Data Variables在集合运行时使用// 在集合运行前设置数据 pm.variables.replaceIn(); // 生成GUID pm.variables.replaceIn(); // 时间戳
批量设置变量可以批量从响应中提取多个值// 从响应JSON中提取多个参数 const response pm.response.json(); // 批量设置 const paramsToSave { authToken: response.token, expiresIn: response.expires_in, refreshToken: response.refresh_token, userName: response.user.name }; Object.keys(paramsToSave).forEach(key { if (paramsToSave[key]) { pm.environment.set(key, paramsToSave[key]); } });
使用动态变量Postman提供了内置的动态变量// 在Tests中使用 console.log(GUID:, pm.variables.replaceIn()); console.log(时间戳:, pm.variables.replaceIn()); console.log(随机数:, pm.variables.replaceIn()); // 在URL或请求体中使用 //
链式调用多个接口可以在集合中使用// 在Tests中调用下一个请求 if (pm.response.code
{ // 保存数据 pm.environment.set(orderId, pm.response.json().orderId); // 延迟后执行下一个请求 setTimeout(() { pm.sendRequest({ url: /orders/, method: GET, header: { Authorization: Bearer } }, function (err, response) { console.log(response.json()); }); },
; }
最佳实践变量命名规范使用清晰的命名如accessToken而不是token清理变量不需要的变量及时清理使用不同环境开发、测试、生产使用不同的环境错误处理检查变量是否存在文档化在描述中说明变量的用途// 检查变量是否存在 if (!pm.environment.get(accessToken)) { console.warn(警告: accessToken 不存在); // 可以设置默认值 pm.environment.set(accessToken, default-token); } // 清理变量 pm.environment.unset(tempToken); pm.environment.unset(tempData);变量作用域优先级Postman中变量的优先级从高到低本地变量Local Variables数据变量Data Variables环境变量Environment Variables集合变量Collection Variables全局变量Global Variables通过合理使用这些变量传递方法你可以在Postman中轻松地实现接口间的参数传递和数据共享。
人行中被陌生人操-人行中被陌生人操应用