Javascript 如何在Postman中获取请求参数?
我正在为邮递员写测试,一般来说,这很容易。但是,我现在想访问请求的一些数据,确切地说是一个查询参数。Javascript 如何在Postman中获取请求参数?,javascript,api,postman,Javascript,Api,Postman,我正在为邮递员写测试,一般来说,这很容易。但是,我现在想访问请求的一些数据,确切地说是一个查询参数。 您可以通过返回字符串的“request.URL”对象访问请求URL。Postman中是否有一种简单的方法来解析此URL字符串以访问查询参数?我认为Postman请求对象中没有任何现成的属性可用于查询参数 当前有四个属性与“请求”对象关联: 数据{object}-这是请求的表单数据字典。(request.data[“key”]=“value”)头{object}-这是请求头的字典(request.
您可以通过返回字符串的“request.URL”对象访问请求URL。Postman中是否有一种简单的方法来解析此URL字符串以访问查询参数?我认为Postman请求对象中没有任何现成的属性可用于查询参数 当前有四个属性与“请求”对象关联: 数据{object}-这是请求的表单数据字典。(request.data[“key”]=“value”)头{object}-这是请求头的字典(request.headers[“key”]=“value”)方法{string}-GET/POST/PUT等。
url{string}-请求的url
来源:查看控制台中的操作:
console.log(request);
它将向您展示您可以从请求中获得的所有信息。然后,如果需要测试名称,则应使用request.访问不同的参数,即request.name。
如果您想要url中的某个特定元素,恐怕必须使用一些编码才能获得它(很抱歉,我是javascript的初学者)
希望这有帮助
Alexandre我一直在寻找访问请求参数来编写测试(在POSTMAN中)。我最终解析了POSTMAN中提供的
请求.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
编辑:添加
pm.request.url.query.all()
数组将所有查询参数作为对象保存。
要将参数作为字典获取,可以使用:
var query = {};
pm.request.url.query.all().forEach((param) => { query[param.key] = param.value});
pm.request.url.query
返回对象。例如,您可以获取一个参数pm.request.url.query.get()
或全部pm.request.url.query.all()
。如果要以URL编码格式提取查询字符串而不进行解析,请参阅PropertyList
方法。。以下是如何做到这一点:
pm.request.url.getQueryString() // example output: foo=1&bar=2&baz=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'}
切换属性旁边的复选框将更新已禁用的属性:
以前的帖子,但我已经做到了:
出于某种原因,调试器将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返回参数,其中包含key、value和disabled字段。getValueFromQuery只返回值。它非常简单-使用
pm.request.url.query.toObject()。您的_参数
对我很有效-这个解决方案非常优雅:)谢谢。这太完美了。这应该是可以接受的答案。如果你想在一行中完成同样的事情,你可以做pm.request.url.query.all().reduce((paramObject,param)=>({…paramObject,[param.key]:param.value}),{})
不需要(或不再需要)上面的一行pm.request.url.query.toObject()
将返回相同的简单哈希值,但不包含bloat。您好,如果我想在每次拦截器收到post请求时执行脚本,并用请求参数填充js,请怎么办??请,谢谢you@Scaramouche很抱歉,我不知道该怎么做。我想你应该问一个单独的问题,这样你就可以得到一些答案。只需添加即可完成:此“请求”以字符串形式返回请求。因此,此时您无法执行类似request.myparam的操作。但是,您可以解析这个请求,例如:let req=JSON.parse(request.data)然后您可以通过req.myParam获取任何请求参数。例如,在请求和响应之间进行测试。谢谢,我需要一种方法以编程方式检测Postman的GUI中是否禁用了查询参数。这很管用。