如何在Node.js的Express.js中获取GET(查询字符串)变量?
我们是否可以在Node.js中的查询字符串中获取变量,就像我们在PHP中的$_GET
中获取它们一样?
我知道在Node.js中我们可以在请求中获取URL。 有没有一种方法来获取查询字符串参数?
是的,您可以访问req.url并将内置url
模块访问为url.parse手动:
var url = require('url');
var url_parts = url.parse(request.url, true);
var query = url_parts.query;
但是,在expressjs中它已经为您完成了,您可以简单地使用req.query:
var id = req.query.id; // $_GET["id"]
既然你已经在你的标签中提到了Express.js,下面是一个特定于Express的答案:使用req.query。 例如
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('id: ' + req.query.id);
});
app.listen(3000);
在Express中,使用req.query
。
req.params
只获取路由参数,而不是查询字符串参数。 查看快递或航行文件:
(req.params)检查路由参数,例如:/ user /:id
(req.query)检查查询字符串参数,例如:?id = 12检查urlencoded body params
(req.body),ex:id = 12要使用urlencoded请求体,req.body应该是一个对象。 这可以通过使用_express.bodyParser中间件来完成。
也就是说,大多数情况下,您希望获取参数的值,而不管其来源。 在这种情况下,使用req.param('foo')
。
无论变量是在路由参数,查询字符串还是编码的请求主体中,都会返回该参数的值。
注意 - 如果你想要获得所有三种类型的请求参数(类似于PHP的$_REQUEST
)的交集,你只需要将这些参数合并到一起 - 这就是我如何在Sails中进行设置。 请记住,路径/路径参数对象( req.params
)具有数组属性,因此顺序很重要(尽管这可能会在Express 4中更改)
上一篇: How to get GET (query string) variables in Express.js on Node.js?