Node.js req.query仅检测URL中的单个参数
我有以下测试代码Node.js req.query仅检测URL中的单个参数,node.js,url,express,Node.js,Url,Express,我有以下测试代码 app.use(function(req,res,next) { console.log("Params : " + req.params); console.log("Path : " + req.path); console.log("Query :" +req.query); for(var params in req.query) { console.log(params); } res.end("processed"); }); 每当我生成具
app.use(function(req,res,next)
{
console.log("Params : " + req.params);
console.log("Path : " + req.path);
console.log("Query :" +req.query);
for(var params in req.query)
{
console.log(params);
}
res.end("processed");
});
每当我生成具有以下url的请求时
http://127.0.0.1:8080/path/resource/myname?user=alanz&password=alpacasocks
我获得输出
Params : [object Object]
Path : /path/resource/name
Query :[object Object]
user
它似乎没有检测到第二个查询变量。使用curl生成请求
var data = req.query;
query将生成如下对象
{user:"alanz", password: "alpacasocks"}
您可以通过点符号提取用户名和密码
va username = data.user; //print "alanz"
va password = data.password; //print "alpacasocks"
谢谢因为它是这样站着的:
// GET /users?user[name]=myname&user[password]=mypassword
req.query.user.name
// => "myname"
req.query.user.password
// => "mypassword
我想是这样的:
// GET /users?user[name]=myname&user[password]=mypassword
req.query.user.name
// => "myname"
req.query.user.password
// => "mypassword
因为您查询的是同一对象的两个值,而不是两个不同的对象。也许你只是想用它作为参数,就像在
PS:在任何情况下,我都不会在任何真实场景中这样对待密码。userparam的值是多少?你试过使用浏览器而不是curl吗?我没有试过浏览器,因为我使用的是cloud9(不确定它是否允许公共连接),但如果有机会,我会尝试的。我尝试了下面的解决方案,但无法使其工作,但我开始怀疑这是curl而不是nodeTry的问题,以逃避
&
。试着打印参数的值,例如,req.query[params]
。回到家,用我的浏览器试了一下,效果很好。这是cloud9开发环境中的curl问题