Nodejs搭配Express4.x,获取请求参数主要有以下三种方式:
req.query
req.body
req.params
这三种方式各有应用的场景,以下会结合代码介绍下~
// GET /search?name=wynne&shoe[color]=blue&shoe[type]=converse
router.get('/search', function(req, res, next) {
console.log(req.query.name);
// => "wynne"
console.log(req.query.shoe.color);
// => "blue"
console.log(req.query.shoe.type);
// => "converse"
res.send('End');
}
req.body 用于获取POST请求中的参数(需要搭配body-parser/multer等中间件使用)
var app = require('express')();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// POST /signIn user[name]=wynne user[pwd]=12345 msg=hello
app.post('/login', function (req, res, next) {
console.log(req.body.msg);
// => hello
console.log(req.body.user.name);
// => wynne
console.log(req.body.user.pwd);
// => 123456
res.send('End');
});
// GET /user/wynne/2012
route.get('/user/:name/:year', function(req, res, next) {
console.log(req.params.name);
// => wynne
console.log(req.params.year);
// => 2012
res.send('End');
});
// GET /user/wynne/2012.html 当使用正则表达式定义路由的时候,req.params[n]会是正则捕获的n个捕获分组。这个规则同样适用于全匹配的路由,如user/*.html
route.get('user/*.html', function(req, res, next) {
console.log(req.params[0]);
// => 2012
res.send('End');
});