Postman 如果是邮递员401,请授权并重试

Postman 如果是邮递员401,请授权并重试,postman,Postman,为了进行测试,我们大量使用postman来访问我们的API。现在我们调用一个路由进行授权,它将必要的内容存储在环境变量中,然后点击我们真正感兴趣的请求。如果请求得到401,我想使用test选项卡自动调用authorize路由,然后自动重试请求 看起来我可以调用pm.setNextRequest(“Name”),但这只能在集合运行程序的上下文中设置下一个请求。我希望在运行单个请求时自动执行此操作。有没有办法做到这一点 我特别寻找与collection runner无关的答案,因为它离我的用例还很远

为了进行测试,我们大量使用postman来访问我们的API。现在我们调用一个路由进行授权,它将必要的内容存储在环境变量中,然后点击我们真正感兴趣的请求。如果请求得到401,我想使用test选项卡自动调用authorize路由,然后自动重试请求

看起来我可以调用pm.setNextRequest(“Name”),但这只能在集合运行程序的上下文中设置下一个请求。我希望在运行单个请求时自动执行此操作。有没有办法做到这一点

我特别寻找与collection runner无关的答案,因为它离我的用例还很远。谢谢。

@Claudekennilo

您可以在请求前脚本中使用以下代码段。请注意,我向您介绍了如何使用请求前脚本调用端点,您可以根据需要更改循环

const echoPostRequest = {
    url: 'https://jsonplaceholder.typicode.com/posts',

  method: 'POST',
  header: 'Content-Type:application/json',
  body: {
    mode: 'application/json',
    raw: JSON.stringify(
    {
"userId": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
})
  }
};

var checker = true;
var iterator = 0;

do {

    pm.sendRequest(echoPostRequest, function (err, res) {

        if(res.code === 200){
            if (err === null) {
                var responseJson = res.json();
                // Do something here if condition passes

            }
        }else{
            // Do something if condition fails
        }

    });
iterator++;
}
while (iterator<10);
const echoPostRequest={
网址:'https://jsonplaceholder.typicode.com/posts',
方法:“POST”,
标题:“内容类型:application/json”,
正文:{
模式:“应用程序/json”,
raw:JSON.stringify(
{
“用户ID”:1,
“标题”:“除可选择的补救措施外,必须重新制定计划”,
“正文”:“要求和支持\n要求专业人员和\n专业人员在设计和施工前对环境进行保护\n要求建筑设计师在设计和施工前对环境进行保护”
})
}
};
var checker=true;
var迭代器=0;
做{
发送请求(echoPostRequest,函数(err,res){
如果(资源代码===200){
if(err==null){
var responseJson=res.json();
//如果情况好转,在这里做点什么
}
}否则{
//如果条件失败,做点什么
}
});
迭代器++;
}

while(迭代)您可以使用请求的Pre-request script部分中的Postman脚本来检查收到的响应是否为401,然后重试。如果得到预期的响应,将调用实际请求。如何在Pre-request中获得请求的响应?