postman 在预请求脚本中更新请求URL

7qhs6swi  于 2023-04-11  发布在  Postman
关注(0)|答案(3)|浏览(381)

是否可以在预请求脚本中更新 Postman 请求的URL。我想根据动态环境输入编辑URL。
例如:

if (environment.someValue) {
    request.url = request.url + "\" + environment.someValue
    if (environment.anotherValue) {
        request.url = request.url + "\" + environment.anotherValue
    }
}
    
console.log(request.url);

上面的代码给了我完美的控制台日志:
例如,如果url是https://someServer/someRequestenvironment.someVarxenvironment.anotherVary,则上面的console.log(request.url)打印:

https://someServer/someRequest/x/y

但问题是(假设我请求Get),即使在记录了被覆盖的请求url之后,它也只调用https://someServer/someRequest,而不会覆盖到https://someServer/someRequest/x/y
如何修改URL的任何想法如上所述。

cngwdvgl

cngwdvgl1#

如果你的请求中的URL被设置为全局的,它应该可以工作。例如,我有一个GET请求:
GET http://{{myurl}}/etc.,其中myurl设置为全局变量。
在我的预请求脚本中,我执行pm.globals.set("myurl", <new url>);
当我启动请求时,它会尝试对我的新URL执行GET请求。
所以可以这样做,但你必须使用全局或环境变量来动态更新你的请求:
将你的'someRequest'设置为一个全局变量,你可以在你的prescript中更新它(而不是request.url),那么当你启动你的请求时,它将被解释:

https://someServer/{{someRequest}}
9avjhtql

9avjhtql2#

pm.request.url = "dynamic value"

您可以在Postman预请求步骤中使用上面的单行更新URL。
pm.request.url返回带有字段hostpathparams的对象。但您可以将其替换为字符串。

ogq8wdun

ogq8wdun3#

谢谢你的提示:我使用这几行代码来操作RESTful API路由中出现的两个值:
//确保请求URL中的工资单ID和员工ID正确填充零pm.request.url.path[pm.request.url.path.indexOf(“{{PayrollID}}”)] = data.PayrollID.toString().padStart(6,'0');pam.request.url.path[pm.request.url.path.indexOf(“{{EmployeeID}}”)] = data.EmployeeID.toString().padStart(7,'0');

相关问题