如何在Postman中获取请求参数?

时间:2017-05-22 08:24:15

标签: javascript api postman

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

10 个答案:

答案 0 :(得分:10)

我一直在寻找请求参数来编写测试(在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

POSTMAN CLIENT CONSOLE RESPONSE

编辑:添加了Github Gist

答案 1 :(得分:10)

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

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

答案 2 :(得分:6)

如果要提取URL编码格式的查询字符串而不进行解析。这是操作方法:

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

答案 3 :(得分:4)

我认为查询参数的Postman请求对象中没有任何可用的开箱即用属性。

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

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

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

答案 4 :(得分:3)

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

答案 5 :(得分:1)

在控制台中查看:

  var winston = require('winston');

  winston.log('info', 'some message!'); // this is at line 4 of myfile.js

它会告诉您从请求中获得的所有信息。然后,您将使用请求访问不同的参数。 request.name如果你想要测试名称。 如果你想要一个网址中的特定元素,我担心你将不得不使用一些编码来获取它(抱歉,我是javascript的初学者)

希望这有帮助

亚历山大

答案 6 :(得分:1)

这里有点晚了,但是我一直在使用以下内容来获取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;
    }
});

因此,如果我的网址是example.com,则该数组为空,并且该结构没有任何内容,{}

如果url为example.com?foo=bar,则该数组包含

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

我的结构最终变成了{ foo: 'bar' }

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

enter image description here

答案 7 :(得分:1)

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

答案 8 :(得分:0)

较早的帖子,但我已经开始使用它了:

由于某种原因,调试器将pm.request.url.query视为包含所需项的数组,但是一旦尝试从中获取项,该项始终为null。即pm.request.url.query [0](或.get(0))将返回null,尽管调试器显示其值为0。

我不知道为什么,但是由于某种原因,尽管调试器声称它不在索引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只返回值。

答案 9 :(得分:0)

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

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