邮递员:在预请求脚本中从JSON文件获取数据

时间:2019-06-12 09:02:39

标签: javascript json postman

我正在尝试找到一种方法来使用邮递员的预请求脚本中的.json文件中的数据。 如您在下面的代码中看到的,我正在为请求使用循环。 在我的请求前脚本中,我想使用我的文件Data.json中的“ id_group”:“ 14803,14805” 代替 id_group = [“ 14803”,“ 14805”];

谢谢

URL:

.../group/{{id_of_group}}/members

身体

    {
     "id_user": {{id_user}}
    }

预请求脚本:

var id_group = pm.environment.get("id_group");

if (!id_group) {
    id_group = ["14803","14805"];
}   

var currentIdGroup = id_group.shift();
pm.environment.set("id_of_group", currentIdGroup);
pm.environment.set("id_group", id_group);

测试

var id_group = pm.environment.get("id_group");
console.log(id_group);
if (id_group && id_group.length > 0) {
   postman.setNextRequest('Add user to groups');
} else {
   postman.setNextRequest();
}

Data.json文件:

[{
 "id_user":47091,
 "id_group":"14803,14805"
}]

2 个答案:

答案 0 :(得分:1)

您正在创建一个数组对象。但是pm.environment.set()仅存储字符串。 您必须使用JSON.stringify()将它们转换为字符串。

我建议不要使用pm.environment.set("id_of_group", currentIdGroup);

pm.environment.set("id_of_group", JSON.stringify(currentIdGroup));

和向后相同。如果要从env vars加载,则必须解析字符串化的对象: JSON.parse(pm.environment.get("id_group"));

答案 1 :(得分:0)

我刚刚找到了答案。 在请求前脚本中,我使用变量id_group,该变量用于获取将在循环中使用的ID。

我发现 pm.iterationData.get(); ,它将从JSON文件中获取数据。代替 id_group = [“ 14803”,“ 14805”]; ,我使用 pm.iterationData(“ id_group”)

我的预请求脚本现在看起来像这样:

var id_group = pm.environment.get("id_group");   

    if (!id_group) {
        id_group = pm.iterationData.get("id_group");
    } 

    var currentIdGroup = id_group.shift();
    pm.environment.set("id_of_group", currentIdGroup);
    pm.environment.set("id_group", id_group);

我作弊了一点,我的JSON现在看起来像这样:

[{
 "id_user":47091,
 "id_group":["14803","14805"]
}]