Node.js:req.query 和req.params之间的区别

通过req.query [myParam]和req.params.myParam获取QUERY_STRING参数是否有区别? 如果是这样,我应该什么时候使用哪个?

谢谢。

req.params包含路由参数(在URL的path部分), req.query包含URL查询参数(在URL中的?之后)。

您也可以使用req.param(name)在两个地方(以及req.body )查找参数,但现在不推荐使用此方法。

鉴于这条路线

 app.get('/hi/:param1', function(req,res){} ); 

并提供此urlhttp://www.google.com/hi/there?qs1=you&qs2=tube

你将会拥有:

REQ。 询问

 { qs1: 'you', qs2: 'tube' } 

REQ。 PARAMS

 { param1: 'there' } 

快递req.params >>

您现在应该可以使用点符号来访问查询。

如果你想访问,说你正在/checkEmail?type=email&utm_source=xxxx&email=xxxxx&utm_campaign=XX收到一个GET请求,你想取出使用的查询

 var type = req.query.type, email = req.query.email, utm = { source: req.query.utm_source, campaign: req.query.utm_campaign }; 

参数用于接收请求的自定义参数,例如(示例):

 router.get('/:userID/food/edit/:foodID', function(req, res){ //sample GET request at '/xavg234/food/edit/jb3552' var userToFind = req.params.userID;//gets xavg234 var foodToSearch = req.params.foodID;//gets jb3552 User.findOne({'userid':userToFind}) //dummy code .then(function(user){...}) .catch(function(err){console.log(err)}); });