循环查询参数Postman

nxagd54h  于 2022-11-07  发布在  Postman
关注(0)|答案(2)|浏览(226)

我尝试使用循环查询参数工具测试API,但问题是查询参数只获取“mark”的最后一个值,我需要的是运行和测试每个标记,并将其呈现到url中,这里是我的预请求脚本

结果如下:

m4pnthwp

m4pnthwp1#

有几种方法可以做到这一点,但我使用了两个请求。第一个请求用于获取数据,第二个请求作为迭代请求。您可以看到完整的工作流在on this folder I've created for you上运行。要自己测试它,只需派生集合并在您的一个工作区上运行整个文件夹

在高层次上,这就是您要做的:
1.创建一个文件夹,以便可以将这些请求作为“流”运行。
1.创建一个获取所有“标记”的请求,存储“标记”
1.创建另一个请求:

  • 3.1有标记时,去掉一个标记
  • 3.2添加mark作为查询参数
  • 3.3保存剩余标记,如果没有留下,则退出。
  • 3.4再次调用同一请求
    Tests上第一个请求的代码:
const responseDate = pm.response.json()
const marks = responseDate.marks.map(x => x.name)

console.log("Obtained a list of brands:", marks)
console.log("Saving brands into marks collection variable")
pm.collectionVariables.set("marks", marks)
postman.setNextRequest("Brand detail");

第二次请求的代码pre-request script

let marks = pm.collectionVariables.get("marks")
const currentMark = marks.shift()
pm.request.addQueryParams(`marque=${currentMark}`);

if (marks.length > 0) {
    pm.collectionVariables.set("marks", marks)
    postman.setNextRequest("Brand detail");
} else
{
    // Redundant
    postman.setNextRequest(null)
}

您可以看到,在第一个页面中,我使用了您的真实的URL,在第二个页面中,我无法进行身份验证,因此我使用了Postman Echo API,以便能够发送请求。

  • 注意:您必须运行整个文件夹以链接请求,否则postman.setNextRequest()将无法工作。*
yks3o0rb

yks3o0rb2#

finally i resloved the problem, here's the new script :

let brandnames = pm.collectionVariables.get("brandnames");
 if(!brandnames || brandnames.length == 0) {
    pm.sendRequest("http://cms.ioit.tn/api/cms/home/1", function (err, response) {
            marks = response.json().marks;
            const markname = marks.map(x => x.name);
            let currentbrandname = markname.shift();
            pm.collectionVariables.set("brandname", currentbrandname);
            pm.collectionVariables.set("brandnames", markname);
        });
}
else {
        let currentbrandname = brandnames.shift();
        pm.collectionVariables.set("brandname", currentbrandname);
        pm.collectionVariables.set("brandnames",brandnames);
     }
        if(brandnames==undefined){
            pm.collectionVariables.unset("brandnames");
            }

相关问题