Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Postman中获取请求参数?_Javascript_Api_Postman - Fatal编程技术网

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)