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

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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 返回 PropertyList 的 QueryParam 对象。例如,您可以获得一个参数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

【讨论】:

以上是关于如何在 Postman 中获取请求参数?的主要内容,如果未能解决你的问题,请参考以下文章

postman测试请求参数中文乱码问题

postman怎么设置参数文档

如何使用POSTMAN发送请求参数到一个写好加解密方法的接口里

数组作为 Postman GET 请求中的参数

如何设置postman的默认端口

如何在 PostMan 的预请求脚本中计算 md5 哈希?