我们可以在 Node.js 中的查询字符串中获取变量,就像我们在 PHP 中的$_GET
中获取它们一样吗?
我知道在 Node.js 中我们可以在请求中获取 URL。有没有获取查询字符串参数的方法?
由于您在标签中提到了 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 :
var id = req.query.id; // $_GET["id"]
否则,在NodeJS 中 ,您可以手动访问req.url和内置url
模块到 [url.parse]( https://nodejs.org/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost ):
var url = require('url');
var url_parts = url.parse(request.url, true);
var query = url_parts.query;
在 Express 中,使用req.query
。
req.params
只获取路由参数,而不是查询字符串参数。查看express或sails文档:
(req.params)检查路由参数,例如:/ user /:id
(req.query)检查查询字符串参数,例如:?id = 12 检查 urlencoded body 参数
(req.body),ex:id = 12 要使用 urlencoded 请求体,req.body 应该是一个对象。这可以通过使用_express.bodyParser 中间件来完成。
也就是说,大多数情况下,您希望获得参数的值,而不管其来源。在这种情况下,请使用req.param('foo')
。
无论变量是在路由参数,查询字符串还是编码的请求主体中,都将返回参数的值。
旁注 - 如果你的目标是得到所有三种类型的请求参数的交集(类似于 PHP 的$_REQUEST
),你只需要将参数合并在一起 - 这就是我在 Sails 中设置它的方法 。请记住,路径 / 路由参数对象( req.params
)具有数组属性,因此顺序很重要(尽管在 Express 4 中可能会有所改变 )