你可以通过"request.url"对象访问请求的URL,它返回一个字符串。在Postman中有没有一种简单的方法来解析这个URL字符串以访问查询参数?
pm.request.url.query.toObject()
可以将所有查询参数作为字典获取。
var query = {};
pm.request.url.query.all().forEach((param) => { query[param.key] = param.value});
我一直在寻找获取测试中的请求参数(在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
如果您想在不解析查询字符串的情况下提取URL编码格式,请按照以下方法操作:
pm.request.url.getQueryString() // example output: foo=1&bar=2&baz=3
pm.request.url.query
返回一组QueryParam对象的PropertyList。例如,你可以通过pm.request.url.query.get()
获取一个参数,或者通过pm.request.url.query.all()
获取所有参数。请参阅PropertyList
方法。
以下适用于 Postman 8.7及以上版本
var ref = pm.request.url.query.get('your-param-name');
pm.request.url.query.toObject().YOUR_PARAM
。我认为Postman请求对象中没有可用的开箱即用属性来处理查询参数。
目前,“请求”对象与四个属性相关联:
data {object} - 这是请求表单数据的字典。(request.data[“key”]==”value”) headers {object} - 这是请求头的字典(request.headers[“key”]==”value”) method {string} - GET/POST/PUT等。
url {string} - 请求的URL地址。
可能晚了一些,但我正在使用以下方法获取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
,那么数组为空,结构体中没有任何内容,{}
如果网址是example.com?foo=bar
,则数组包含:
{
description: {},
disabled:false
key:"foo"
value:"bar"
}
我的结构最终变成了{ foo: 'bar' }
切换属性旁边的复选框会更新disabled
属性:
请在控制台中查看以下内容:
console.log(request);
这将展示你可以从请求中获取的所有内容。然后,你应该使用request来访问不同的参数,例如,如果你需要测试名称,就使用request.name。
如果你想要URL中的特定元素,恐怕你需要使用一些编码来获取它(抱歉,我是JavaScript的初学者)。
希望这能帮到你。
Alexandre
let req = JSON.parse(request.data);
然后,您可以通过req.myParam获取任何请求参数。例如,在请求和响应之间进行测试。 - Winter Dash你也可以获取查询字符串并将其设置为全局变量,如下所示:
postman.setGlobalVariable("SomeGlobalVariable",pm.request.url.query.get("queryParamName"));
pm.request.url.query.all().reduce((paramObject, param) => ({...paramObject, [param.key]: param.value}), {})
。 - Bobby Nicholspm.request.url.query.toObject()
将返回相同的简单哈希表,而不会有多余的内容。 - Erhhung