如何在 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 中获取请求参数?的主要内容,如果未能解决你的问题,请参考以下文章