【问题标题】:How to get to request parameters in Postman?如何在 Postman 中获取请求参数?
【发布时间】:2017-10-21 19:48:04
【问题描述】:

我正在为 Postman 编写测试,这通常很容易工作。但是,我现在想访问请求的一些数据,确切地说是一个查询参数。 您可以通过返回字符串的“request.url”对象访问请求 URL。 Postman 中是否有一种简单的方法来解析此 URL 字符串以访问查询参数?

【问题讨论】:

    标签: javascript api postman


    【解决方案1】:

    邮递员 8.7 及以上版本低于 1

    var ref = pm.request.url.query.get('your-param-name');
    

    【讨论】:

      【解决方案2】:

      这很简单 - 访问 YOUR_PARAM 值使用 pm.request.url.query.toObject().YOUR_PARAM

      【讨论】:

        【解决方案3】:

        在这里聚会有点晚了,但我一直在使用以下内容来获取一组 url 查询参数,循环它们并与那些参数构建一个键/值对

        // the message is made up of the order/filter etc params
        // params need to be put into alphabetical order
        var current_message = '';
        var query_params = postman.__execution.request.url.query;
        var struct_params = {};
        
        // make a simple struct of key/value pairs
        query_params.each(function(param){
            // check if the key is not disabled
            if( !param.disabled ) {
                struct_params[ param.key ] = param.value;
            }
        });
        

        所以如果我的 url 是 example.com 那么数组是空的并且结构没有任何东西,{}

        如果 url 是 example.com?foo=bar 则数组包含

        {
          description: {},
          disabled:false
          key:"foo"
          value:"bar"
        }
        

        我的结构最终是{ foo: 'bar' }

        切换属性旁边的复选框会更新 disabled 属性:

        【讨论】:

        • 谢谢,我需要一种方法来以编程方式检测 Postman 的 GUI 中是否禁用了查询参数。这工作得很好。
        【解决方案4】:

        较早的帖子,但我已经解决了这个问题:

        由于某种原因,调试器将 pm.request.url.query 视为包含您想要的项目的数组,但一旦您尝试从中获取项目,它总是为空。 IE。 pm.request.url.query[0](或 .get(0))将返回 null,尽管调试器显示它在 0 处有一些东西。

        我不知道为什么,但由于某种原因,它不在索引 0 处,尽管调试器声称它是。相反,您需要先过滤查询。比如这样:

        var getParamFromQuery = function (key)
        {
            var x = pm.request.url.query;
        
            var newArr = x.filter(function(item){
                return item != null && item.key == key;
            });
        
            return newArr[0];
        };
        
        var getValueFromQuery = function (key)
        {
            return getParamFromQuery(key).value;  
        };
        
        var paxid = getValueFromQuery("paxid");
        

        getParamFromQuery 返回带有键、值和禁用字段的参数。 getValueFromQuery 只返回值。

        【讨论】:

          【解决方案5】:

          如果您想提取 URL 编码格式的查询字符串而不对其进行解析。操作方法如下:

          pm.request.url.getQueryString() // example output: foo=1&bar=2&baz=3
          

          【讨论】:

          • 你好,如果我想每次拦截器收到一个发布请求并使用请求参数填充一个 js 时执行一个脚本怎么办?拜托了,谢谢
          • @Scaramouche 很抱歉,但我不知道该怎么做。我认为你应该问一个单独的问题,以便得到一些答案。
          【解决方案6】:

          pm.request.url.query 返回 PropertyListQueryParam 对象。例如,您可以获得一个参数pm.request.url.query.get() 或所有pm.request.url.query.all()。请参阅PropertyList 方法。

          【讨论】:

            【解决方案7】:

            pm.request.url.query.all() 数组将所有查询参数保存为对象。 要将参数作为字典获取,您可以使用:

            var query = {};
            pm.request.url.query.all().forEach((param) => { query[param.key] = param.value});
            

            【讨论】:

            • 为我工作 - 这个解决方案真的很优雅:)
            • 谢谢。太棒了。这应该是公认的答案。
            • 如果你想在一行中完成同样的事情,你可以这样做pm.request.url.query.all().reduce((paramObject, param) => ({...paramObject, [param.key]: param.value}), {})
            • 不需要(或不再)上述单行。 pm.request.url.query.toObject() 将返回相同的简单哈希,而不会出现膨胀。
            【解决方案8】:

            我一直在寻找访问 请求参数 以编写测试(在 POSTMAN 中)。我最终解析了 POSTMAN 中可用的request.url

            const paramsString = request.url.split('?')[1];
            const eachParamArray = paramsString.split('&');
            let params = {};
            eachParamArray.forEach((param) => {
                const key = param.split('=')[0];
                const value = param.split('=')[1];
                Object.assign(params, {[key]: value});
            });
            console.log(params); // this is object with request params as key value pairs
            

            编辑:添加Github Gist

            【讨论】:

              【解决方案9】:

              看看控制台做的:

              console.log(request);
              

              它将向您展示您可以从请求中获得的一切。然后您将使用 request. 访问不同的参数,即。 request.name 如果你想要测试名称。 如果你想要 url 中的特定元素,恐怕你必须使用一些编码来获得它(对不起,我是 javascript 的初学者)

              希望对你有帮助

              亚历山大

              【讨论】:

              • 正是我一直在寻找的。只需添加即可完成:此“请求”以字符串形式返回请求。因此,此时您不能执行 request.myparam 之类的操作。但是,您可以解析此请求,例如:let req = JSON.parse(request.data);,然后您可以通过 req.myParam 获取任何请求参数。例如请求和响应之间的测试。
              【解决方案10】:

              我认为 Postman 请求对象中没有任何现成的属性可用于查询参数。

              目前有四个属性与“请求”对象相关联:

              data {object} - 这是请求的表单数据字典。 (request.data[“key”]==”value”) headers {object} - 这是请求标头的字典 (request.headers[“key”]==”value” ) method {string} - GET/POST/PUT 等
              url {string} - 请求的 url。

              来源:https://www.getpostman.com/docs/sandbox

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2023-04-03
                • 2021-06-28
                • 1970-01-01
                • 1970-01-01
                • 2021-01-12
                • 1970-01-01
                • 1970-01-01
                • 2012-04-04
                相关资源
                最近更新 更多