邮递员将响应数组中的最高 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);
}
}
我的跑步者中有一个端点 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);
}
}