我们可以在Node.js中获取查询字符串中的变量吗,就像在PHP中获取$_get中的变量一样?
我知道在Node.js中,我们可以获取请求中的URL。是否有获取查询字符串参数的方法?
我们可以在Node.js中获取查询字符串中的变量吗,就像在PHP中获取$_get中的变量一样?
我知道在Node.js中,我们可以获取请求中的URL。是否有获取查询字符串参数的方法?
当前回答
你应该可以这样做:
var http = require('http');
var url = require('url');
http.createServer(function(req,res){
var url_parts = url.parse(req.url, true);
var query = url_parts.query;
console.log(query); //{Object}
res.end("End")
})
其他回答
我从其他答案中吸取了教训,并决定在整个网站中使用此代码:
var query = require('url').parse(req.url,true).query;
那你可以打电话
var id = query.id;
var option = query.option;
get的URL应该在哪里
/path/filename?id=123&option=456
2014年5月4日更新
此处保留旧答案:https://gist.github.com/stefek99/b10ed037d2a4a323d638
1) 安装express:npm安装express
应用程序.js
var express = require('express');
var app = express();
app.get('/endpoint', function(request, response) {
var id = request.query.id;
response.end("I have received the ID: " + id);
});
app.listen(3000);
console.log("node express app started at http://localhost:3000");
2) 运行app:node app.js
3) 在浏览器中访问:http://localhost:3000/endpoint?id=something
我收到了ID:某物
(自从我的回答以来,很多事情都发生了变化,我相信这是值得的,让事情保持最新)
表达特定的简单获取方法
查询字符串(在?之后),例如https://...?user=abc&id=123var express=要求('express');var app=express();app.get('/',函数(req,res){res.send('id:'+req.query.id);});app.listen(3000);查询参数,如https://.../get/users/:idvar express=要求('express');var app=express();app.get('/get/users/:id',函数(req,res){res.send('id:'+req.params.id);});app.listen(3000);
在Express中,使用req.query。
req.params只获取路由参数,而不获取查询字符串参数。参见快车或帆船文档:
(req.params)检查路由参数,例如:/user/:id(req.query)检查查询字符串参数,例如:?id=12检查URL编码的主体参数(req.body),ex:id=12要使用url编码的请求体,req.body应该是一个对象。这可以通过使用_express.bodyParser中间件来完成。
也就是说,大多数时候,无论参数的来源如何,您都希望获得参数的值。在这种情况下,请使用req.param('fo')。注意,从Express 4开始,这已经被弃用:http://expressjs.com/en/4x/api.html#req.param
无论变量是在路由参数、查询字符串还是编码的请求体中,都将返回该参数的值。
附带说明-如果您的目标是获得所有三种类型的请求参数的交集(类似于PHP的$_request),您只需要将这些参数合并在一起——下面是我在Sails中如何设置的。请记住,path/route-parameters对象(req.params)具有数组财产,因此顺序很重要(尽管在Express4中可能会更改)
考虑一下这个url->/api/endpoint/:id?名称=萨希尔这里id是param,其中as name是查询。您可以像这样在nodejs中获取此值
app.get('/api/endpoint/:id', (req, res) => {
const name = req.query.name; // query
const id = req.params.id //params
});