Node Express Router无法获得响应参数

时间:2018-02-02 08:18:57

标签: node.js express express-router

我无法使用Web应用中的简单express.Router()检索路由参数。

这是一个最小的例子:

var http      = require('http');
const express = require('express');
const app     = express();

app.use('/hello/:world', express.Router()
    .get('/', function (req, res) {
        console.log("hello : ", req.params); //
        res.status(200).send({status: 'success', params: req.params});
}));

var port = process.env.PORT || 3000;
app.set('port', port);
var server = http.createServer(app);
server.listen(port);

我没有收到任何错误,当我尝试触及时,res.params只是空的: 例如http://localhost:3000/hello/100

以下是回复:

{
  "status": "success",
  "params": {}
}

到目前为止我尝试过设置express.Router({ params: 'inherit' }) 正如在这里所说:https://github.com/expressjs/express/issues/2151#issuecomment-44716623但它并没有改变任何东西。

以下是手册:http://expressjs.com/en/guide/routing.html

1 个答案:

答案 0 :(得分:0)

答案:

最终对我有用的东西,基于这些:

API doc:http://expressjs.com/en/api.html
例如:Express Router undefined params with router.use when split across files

是设置express.Router({mergeParams: true})

所以:

var http      = require('http');
const express = require('express');
const app     = express();

app.use('/hello/:world', express.Router({mergeParams: true})
    .get('/', function (req, res) {
        console.log("hello : ", req.params); //
        res.status(200).send({status: 'success', params: req.params});
}));

var port = process.env.PORT || 3000;
app.set('port', port);
var server = http.createServer(app);
server.listen(port);

通过http://localhost:3000/hello/10

提供以下回复
{
  "status": "success",
  "params": {
    "world": "10"
  }
}