Express js从URL的根获取参数(不像req.params一样简单)

问题描述 投票:1回答:2

我制作了一个api,并将其路由如下:

在主路由文件中:

  //with sub-route
  app.use('/api/test/:test', require('./api/test'));

  //Without sub-route
  app.use('/api/test2/:test', function(req, res){
    console.log('in test', req.params, req.body);
    return res.status(200).json({params: req.params, body: req.body});
  });

按预期访问第二条路径将在req.params中显示:test。

在模块化路由文件夹('./api/test')中,我有一个子路由器(index.js),看起来像这样:

router.get('/:test2', controller.getItem);

使用处理程序:

exports.getItem = function getItem(req, res) {
  console.log('in getItem \nreq.params', req.params, '\nreq.body: ', req.body);
  return res.status(200).json({yes: 'yes', params: req.params, body: req.body});
};

因此first url(没有子路由)是:/ api / test2 /:test,并注销您在req.params中代替:test的所有内容。

<,具有子路由:/ api / test /:test /:test2,但是在发送您的get请求时只有:test2出现在req.params中] >。看来,如果您使用此模式,则路由的“根”中(即主路由器中)的任何变量都不会被拾取。

是否有解决此问题的方法?

谢谢

我制作了一个api,并按如下所示进行了路由:在主路由文件中://使用子路由app.use('/ api / test /:test',require('./ api /测试')); //不使用子路由app.use('/ api / test2 /:test',...

javascript node.js express url-routing
2个回答
2
投票
您将需要一个中间件来为您解决此问题:

0
投票
express.js(> = v4.5.0 +)提供了直接解决方案,而无需实现中间件。https://expressjs.com/en/api.html#express.router
© www.soinside.com 2019 - 2024. All rights reserved.