Node Express 路由器无法获取响应参数
Node Express Router can't get response params
我无法在 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 但它不会改变任何东西。
答案:
最终对我有用的东西,基于这些:
API 文件:http://expressjs.com/en/api.html
所以例子:
就是设置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"
}
}
我无法在 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 但它不会改变任何东西。
答案:
最终对我有用的东西,基于这些:
API 文件:http://expressjs.com/en/api.html
所以例子:
就是设置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"
}
}