Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save winnchen/02be293e86400f261447 to your computer and use it in GitHub Desktop.
Save winnchen/02be293e86400f261447 to your computer and use it in GitHub Desktop.

Nodejs搭配Express4.x,获取请求参数主要有以下三种方式:

  1. req.query
  2. req.body
  3. req.params

这三种方式各有应用的场景,以下会结合代码介绍下~

req.query 用于获取GET请求中的参数

// 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');
});
req.params 用于获取path中的参数

// 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');
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment