gpt4 book ai didi

postman - 如何使用预请求脚本构建 Postman url 查询

转载 作者:行者123 更新时间:2023-12-03 22:15:43 29 4
gpt4 key购买 nike

我正在尝试使用预请求脚本根据从 CSV 文件中提取的数据构建请求对象。问题是该请求似乎是在运行预请求脚本之前一成不变的。这似乎使它成为一个中间请求脚本,而不是一个预先请求。
我的代码如下:

if(ipList === undefined) ipList = "1.2.3.4,2.3.4.5,123.234.345.465";
let ips = ipList.split(',');
let queryArray = [];
for( i=0; i<ips.length; i++){
queryArray.push({ "key": "ip", "value": ips[i] });
}
console.log(queryArray);
pm.request.url.query = queryArray;
console.log(pm.request);

当我将请求中的 url 查询变量硬编码为等于 4.3.2.1 时,pm.response.url 对象如下所示:
pm.request.url.query[0] = {key:"ip", value:"4.3.2.1"}
  • 请注意,对象的 url.query[0] 部分与实际获取请求中的参数匹配。

  • 但是,当我将 pm.request.url.query 的值更改为等于新的查询数组时, as you can see here ,查询数组设置正确,但参数未附加到请求 URL。

    因此,除非我做错了什么,看来即使对于预请求脚本,请求也是不可变的。

    所以我的问题是:
    有没有办法在发出请求之前修改请求的 url 参数?

    顺便说一句:我知道在查询中使用多个具有相同键的参数可能看起来很奇怪,但这就是这个 API 的工作方式,并且在查询中硬编码多个 IP 地址工作得很好。

    最佳答案

    您可以为 pm.request.url 分配一个新值.

    在这里,我在 URL 中已经有一些查询参数,我必须对其进行编辑:

    const urlSplit = request.url.split('?');
    const paramsString = urlSplit[1]; // the second part actually represents the query string we need to modify
    const eachParamArray = paramsString.split('&');
    let params = {};
    eachParamArray.forEach((param) => {
    const key = param.split('=')[0];
    const value = param.split('=')[1];
    Object.assign(params, {[key]: value});
    });

    params.bla = params.bla + 'foobar';

    newQueryString = Object.keys(params).map(key => key + '=' + params[key]).join('&');

    pm.request.url = urlSplit[0] + '?' + newQueryString;

    最后,我只是构建了一个新的 URL,使用前一个的第一部分 & 带有编辑过的查询字符串 bla范围。

    关于postman - 如何使用预请求脚本构建 Postman url 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50917035/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com