如何在Postman中将数组索引值发送到JSON正文中

时间:2018-10-11 03:24:18

标签: arrays json rest api postman

我正在链接多个请求,以模拟邮递员中的端到端方案。

我有一个值数组,该数组是从第一个请求返回的。 我已将数组设置为环境变量,以便可以由集合中的其他后续请求访问。

pm.environment.set("travArray", travArray);

travArray的控制台输出如下:

0:"d4faf286-ab68-448b-87cb-ad6a7030bc57"
1:"2e21ab1f-25be-49ab-a984-db529022cf0f"
2:"9a1d942c-4048-48a7-acfc-7a1c9563c528"

接下来,我试图发布一个带有这些索引值的json请求。 在“正文”(原始)请求中,它看起来像这样;

    "travelers": [
    {
        "id": "{{travArray[0]}}",
        "firstName": "teaaf",
        "lastName": "fadfadsfads",
        "travelerType": "ADULT"
    },
    {
        "id": "{{travArray[1]}}",
        "firstName": "sdfsfsdf",
        "lastName": "sdfsfsd",
        "travelerType": "ADULT"
    },
    {
        "id": "{{travArray[2]}}",
        "firstName": "sdfsdf",
        "lastName": "sdfsfsdf",
        "travelerType": "ADULT"
    }
],

但是,当原始请求发布到API端点时,使用这种语法{{travArray [1]}}无法解析实际值。

有趣的是,当我只使用{{travArray}-没有索引符号时,将发送数组的全部内容。

示例输出:

id:"d4faf286-ab68-448b-87cb-ad6a7030bc57,2e21ab1f-25be-49ab-a984-db529022cf0f,9a1d942c-4048-48a7-acfc-7a1c9563c528"
firstName:"teaaf"
lastName:"fadfadsfads"
travelerType:"ADULT"

有人可以告诉我如何解析json正文请求中数组的索引值吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我是Postman脚本的新手,所以这是我的noob方法。

您需要将阵列位置传递到测试脚本中。

var jsonData = JSON.parse(responseBody);
pm.environment.set("travArray", travArray.id[0]);

您可以通过设置变量然后使用.setNextRequest()方法来遍历数组。

在您的环境中设置索引变量。然后执行一些递归脚本编写:

var index = parseInt(pm.environment.get("index")); // Get index
var jsonData = JSON.parse(responseBody); // Deserialize the return
pm.environment.set("travArray", travArray.id[index]); // Get the index of the return
pm.environment.set("index", index + 1); // Increment the index
if (index >= jsonData.travArray.id.length) { // Test if another value exists
    postman.setNextRequest(null) // End script if not needed
}  
postman.setNextRequest("next_request"); // Call the next request

处理完另一个请求后,可以向脚本中添加.setNextRequest()并将其指向第一个请求。通过调用.setNextRequest(null),Postman将停止运行迭代。

祝你好运!