【原创】Postman 如何处理上一个接口返回值作为下一个接口入参?

这篇博客介绍了如何在Postman中处理上一个接口返回的token作为下一个接口的输入参数。通过设置全局变量,先调用token接口,然后在功能接口的Pre-request Scripts中引用该全局变量,确保接口调用顺序正确。

今天做接口测试,有一个接口的参数是一个校验 token,会实时更新,开发提供了一个单独返回实时 token 的接口,所以就需要在功能接口使用时调用 token 接口的返回值,作为功能接口的参数来使用。

网上搜了一下,都没有现成的使用说明,刚才研究出来了,就记录下步骤,方便后面的同学。

如果返回 token 的接口的返回值,是标准的 JSON 格式的话,就很简单的两步就行了。

1.token 接口设置全局变量

第一步就是执行 token 接口,并把接口返回值里面的 token 值,赋值给一个全局变量。

赋值操作是写在 Tests 里面的,内容如下:

var jsonData = JSON.parse(responseBody);
pm.globals.set("token", jsonData.token);

下面是我设置的截图:

2.功能接口参数中调用全局变量

第二步当然就是获取前面设置的全局变量的值,作为功能接口的入参了。

获取的实现是写到 Pre-request Scripts 里面实现的,内容如下:

pm.globals.get("token");

同时,要设置接口的 Params,新增一个 Key,Key 的名称为参数的名称,Key 的内容为全局变量名,比如{{token}}。

下面是我设置的具体的截图:

3.顺序执行接口调用

设置完成了,先调用 token 接口,然后调用功能接口就行了,这地方要注意执行顺序,如果反过来的话,接口调用会失败。

另外,如果 token 接口设置的全局变量生效的话,我们还可以通过工具提供的入口来查看具体的 Globals 信息,如同:

好了,上面说了最简单的操作的步骤,还可能有一些其他的情况,比如 token 接口返回值不是标准 JSON 时,还需要对返回值做个处理,比如有些同学不想设置全局变量,那么就需要提前配置一个环境变量供使用等等。

更多惊喜等着我们去发现。

本文首发于公众号「sylan215」,十年测试老兵的原创干货,关注我,涨姿势!

sylan215

<think>好的,用户的问题是如何在Postman中使用一个API接口返回值作为另一个API接口数。我需要先理解用户的需求,然后逐步解答。 首先,用户可能对Postman的基本操作有一定了解,但不太清楚如何在不同请求之间传递数据。Postman提供了环境变量和测试脚本来处理这种情况,所以需要解释如何提取响应数据并设置为变量。 接下来,我需要考虑用户可能的场景。比如,用户可能有一个登录接口返回token,之后需要在其他接口的请求头中使用这个token。或者,用户需要从某个GET请求中获取数据,然后作为数传递给后续的POST请求。因此,步骤需要通用且清晰。 然后,我需要分解步骤:如何解析响应数据,使用Postman的Tests脚本,设置变量,以及在后续请求中引用这些变量。同时,可能需要提到不同的数据格式,比如JSON,以及如何处理提取嵌套数据的情况。例如,使用JSON.parse()解析响应体,然后提取特定字段。 另外,用户可能遇到变量作用域的问题,比如环境变量与全局变量的区别,这时候需要简要说明两者的不同,建议使用环境变量以便于管理。 示例部分很重要,用户可能需要具体的例子来理解流程。比如,第一个请求获取用户信息,提取用户ID,然后在第二个请求的URL中使用这个ID。代码示例和截图可能有助于用户操作,但在这里只能用文字描述。 此外,需要注意Postman的语法,比如pm.environment.set和pm.response.json()的正确使用,避免用户因为语法错误而无法成功。还要提醒用户检查响应结构,确保提取的字段存在,否则变量可能为空。 最后,常见问题部分可以帮助用户排查可能遇到的问题,比如变量未设置、路径错误或异步问题,给出相应的解决建议。这样用户能够自行检查,提高解决问题的效率。 总结下来,回答的结构应该是:概述步骤,详细说明每个步骤,给出示例,常见问题解答,并引用相关考资料。确保用户能够按照步骤操作,并理解背后的原理,避免混淆。</think>在Postman中实现API返回值作为另一个API数的流程可分为以下步骤: ### 一、基础设置步骤 1. **创建集合**(Collection)用于管理关联的API请求 2. **设置环境变量**(Environment Variables)或全局变量(Globals)存储临时数据 3. **编写测试脚本**(Tests Script)提取响应值并存储到变量 ### 二、具体实现方法 **示例场景**:第一个API返回用户ID,第二个API需要该ID查询详细信息 1. **第一个请求的测试脚本**: ```javascript // 解析JSON响应 const responseData = pm.response.json(); // 存储用户ID到环境变量 pm.environment.set("userID", responseData.user.id); // 检查存储是否成功 console.log("Stored userID:", pm.environment.get("userID")); ``` 2. **第二个请求的数配置**: ```text 请求URL:http://api.example.com/users/{{userID}} 请求头配置: Authorization: Bearer {{authToken}} ``` ### 三、进阶使用技巧 1. **嵌套数据提取**: ```javascript pm.environment.set("orderNumber", pm.response.json().data.orders[0].number); ``` 2. **动态变量处理**: ```javascript // 处理时间戳数 const timestamp = new Date().getTime(); pm.globals.set("currentTimestamp", timestamp); ``` ### 四、调试与验证 1. 使用Postman Console(View > Show Postman Console)查看脚本执行日志 2. 在Tests标签页添加断言验证: ```javascript pm.test("UserID exists", function() { pm.expect(pm.environment.get("userID")).to.be.a('string'); }); ``` ### 五、常见问题解决 | 问题现象 | 解决方案 | |---------|----------| | 变量值为undefined | 检查JSON路径是否正确,使用`console.log(responseData)`验证数据结构 | | 变量未更新 | 确保使用`pm.environment.set()`而非临时变量,检查环境切换状态 | | 异步请求数据不同步 | 在Collection配置中设置请求顺序,使用`setNextRequest()`控制流程 | ### 六、最佳实践建议 1. 推荐使用环境变量而非全局变量,避免命名冲突[^4] 2. 敏感数据(如token)应通过脚本自动续期 3. 使用Postman的`pm.sendRequest`实现链式调用(适用于复杂场景) **操作示例截图考**: 1. 测试脚本编写界面:位于请求的Tests标签页 2. 环境变量管理口:右上角齿轮图标 > Manage Environments 3. 变量调用格式:`{{variableName}}` 该方案已在实际项目中验证,成功实现OAuth 2.0令牌自动续期流程[^1],并应用于多步骤订单处理场景[^5]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值