邮递员:是否可以在先决条件脚本中更新邮递员请求的 url

har*_*ant 5 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);
Run Code Online (Sandbox Code Playgroud)

上面的代码给了我完美的控制台日志:

例如,如果URL是https://someServer/someRequestenvironment.someVarxenvironment.anotherVaryconsole.log(request.url)上面打印:

https://someServer/someRequest/x/y
Run Code Online (Sandbox Code Playgroud)

但问题是(假设我请求一个 Get),即使在记录覆盖的请求 url 之后,它也只调用https://someServer/someRequest而不覆盖到https://someServer/someRequest/x/y.

任何想法如何按照上面的要求修改网址。

PDH*_*ide 11

pm.request.url = "dynamic value"
Run Code Online (Sandbox Code Playgroud)

您可以在 Postman 预请求步骤中使用上述单行更新 URL。

pm.request.urlhost返回一个带有字段、path和 的对象params。但你可以用字符串替换它。


A.J*_*oly 5

如果您的请求中的 url 设置为全局,它应该可以工作。IE。我有一个获取请求:

GET http://{{myurl}}/etc. 将 myurl 设置为全局变量

在我的预请求脚本中,我做 pm.globals.set("myurl", <new url>);

当我启动我的请求时,它尝试在我的新 url 上执行 GET 请求。

因此可以这样做,但您必须使用全局或环境变量来动态更新您的请求:

将您设置'someRequest'为可以在您的规定(而不是 request.url)中更新的全局变量,然后在您启动请求时将对其进行解释

https://someServer/{{someRequest}}
Run Code Online (Sandbox Code Playgroud)