如何从必须抛出验证错误的预请求脚本中保存Postman中的全局变量

时间:2017-10-06 10:15:41

标签: rest global-variables postman

此场景过去曾在今年的Postman版本中使用:

  • 在预请求脚本中调用postman.setGlobalVariable('test', 'my_value')
  • 通过抛出错误来完成预请求脚本(这是必需的,因为我必须验证环境变量)
  • 执行Postman请求后(在请求前脚本中抛出错误), Globals 列表中提供值为test的全局变量my_value。< / LI>

在Postman的当前(5.2.1)版本中,全局变量不会从引发错误的预请求脚本中保留。

  1. 有没有办法启用此功能?
  2. 有办法解决这个问题吗?
  3. 我的用例是为DELETE REST调用实现一个保护措施,以避免无意中删除服务器端对象。用户必须发送相同的请求(按发送)一定次数,以确保他真的想要执行此请求。这是在最近使用全局变量实现并工作的。

1 个答案:

答案 0 :(得分:0)

如果您将网址设置为全局或环境变量并在请求中使用{{url}},我认为您可以制定解决方法。

如果是这样,在预先请求脚本中,您可以将其设置为无效值,这样可以避免发送正确的请求,并且将设置其他全局请求。

您可以根据您在其他全球范围内设置的一定数量的点击次数进行更新。即

var counter = postman.getGlobalVariable('counter'); 

if (counter == undefined)
{
    postman.setGlobalVariable('counter', 0); // initialize counter if not exists
}

var validurl= postman.getGlobalVariable('valid_url') 
var current_url= postman.getGlobalVariable('url') // keep the current url which is valid

if (validurl == undefined)
{ 
    postman.setGlobalVariable('valid_url', current_url) // store the valid url if not done yet
}


counter = parseInt(counter) + 1 // then if you call it three times it should execute ...
console.log("info counter " + counter)
postman.setGlobalVariable('counter', counter)
if (counter < 3) // let say three tries, to be sure
{
    pm.globals.set("url", "dummy"); // other syntax, no matter => request fails
}
else
{ 
    // set back url
     pm.globals.set("url", validurl);
}

我觉得这样的事情可以满足你的要求......