邮递员将响应数组中的最高 ID 设置为环境变量

Postman set highest id from response's array as environmental variable

我的跑步者中有一个端点 X,其中 returns 包含大量对象(每个对象都带有“id”参数)的数组。作为最后一个创建的对象始终具有最高的 id。

在运行程序的下一步中,我需要使用端点 X 返回的具有最高 ID 的对象中的一些参数(“id”和“taskLinkKey”)。 所以我使用这个公式将它们设置为环境变量:

const responseJson = pm.response.json();
let arr = responseJson;
let lastTask = arr.length -1;
pm.environment.set("taskId", arr[lastTask].id);
pm.environment.set("taskLinkKey", arr[lastTask].taskLinkKey);
console.log(pm.variables.get("taskId"));
console.log(pm.variables.get("taskLinkKey"));

如您所见,端点X返回的数组中最后一个对象的参数被设置为我的环境变量。但问题是,有时调用端点 X 时,返回数组中的最后一个对象不是具有最高 id 的对象。我不知道为什么,我对此无能为力。 您能否提出一个解决方案,将具有最高 ID 的对象的“id”和“taskLinkKey”参数设置为我的环境变量(而不是数组中的最后一个对象)?

例如: 端点 X returns:

[
 {
        "encodedKey": "8a19c3cb80fa96bb0180fad7c00f6170",
        "id": 2761,
        "creationDate": "2022-05-25T10:53:59+0000",
        "lastModifiedDate": "2022-05-25T10:53:59+0000",
        "dueDate": "2022-05-26T00:00:00+0000",
        "taskLinkKey": "8a19a20c80f8e1f70180fada15401a7e"
    },
    {
        "encodedKey": "8a19c46680f8e7b80180fa8af13c563c",
        "id": 2711,
        "creationDate": "2022-05-25T09:27:31+0000",
        "lastModifiedDate": "2022-05-25T09:27:32+0000",
        "dueDate": "2022-05-26T00:00:00+0000",
        "taskLinkKey": "8a19a20c80f8e1f70180fa70f1f20337"
    },
    {
        "encodedKey": "8a19d13180f8d7e20180fae137b431f5",
        "id": 2771,
        "creationDate": "2022-05-25T11:01:47+0000",
        "lastModifiedDate": "2022-05-25T11:01:47+0000",
        "dueDate": "2022-05-26T00:00:00+0000",
        "taskLinkKey": "8a19a24680f8cdfb0180fadbb8524fc3"
    },
    {
        "encodedKey": "8a19c46680f8e7b80180fa8af13c563e",
        "id": 2712,
        "creationDate": "2022-05-25T09:27:37+0000",
        "lastModifiedDate": "2022-05-25T09:27:37+0000",
        "dueDate": "2022-05-26T00:00:00+0000",
        "taskLinkKey": "8a19be1e80f21ed60180fa8b02c9678f"  
    }
]

然后我想设置两个环境变量:

id: 2771

任务链接密钥:8a19a24680f8cdfb0180fadbb8524fc3

您需要遍历响应中的所有元素。

第一次设置环境变量(如果响应只有一个项目,或者第一个项目具有最高 ID)。 对于接下来的每一项,您检查 ID 是否大于您已经存储的 ID。如果是,则用新值覆盖。

const responseJson = pm.response.json();
let arr = responseJson;

for (var i = 0;i<arr.length;i++) {
    if (!pm.environment.get("taskId")) {
        pm.environment.set("taskId", arr[i].id);
        pm.environment.set("taskLinkKey", arr[i].taskLinkKey);
    } else if (arr[i].id > pm.environment.get("taskId")) {
        pm.environment.set("taskId", arr[i].id);
        pm.environment.set("taskLinkKey", arr[i].taskLinkKey);
    }
}