Express路由器中的请求参数
Request parameter in Express router
我在访问 Express 路由器中的请求参数时遇到一些问题。
我的 server.js
文件有这个:
app.use('/user/:id/profile', require('./routes/profile');
这是我的 ./routes/profile.js
文件:
router.get('/', (req, res) => {
console.log(req.params.id);
}
但是控制台日志打印 undefined
。
我是新手,感觉我缺少一些关于路由工作原理的基本知识。
有人可以帮我吗?
这是我的全部 server.js
:
const express = require('express');
const app = express();
app.use(express.json());
app.use('/user/:id/profile', require('./routes/profile'));
app.listen(5000, () => console.log('Listening'));
这是我的全部 profile.js
:
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
console.log(req.params.id);
res.status(200).send('In profile route');
});
module.exports = router;
URL 参数不会暴露给路由器。您在这里有几个选择:
- 解析
req.originalUrl
获取用户id(不推荐)。 req.originalUrl
不受路由器挂载点的影响,将保持 /user/112/profile
或您访问过的任何 url。
- 添加一些中间件来暴露id(推荐)。您的新路线声明最终将如下所示:
(现在您可以在 profile.js
中使用 req.userId
)
app.use('/user/:id/profile', function(req, res, next) {
req.userId = req.params.id;
next();
}, require('./routes/profile'));
- 将挂载点从
/user/:id/profile
更改为 /user
,然后编辑您的路由器以监听 /:id/profile
(不推荐)。
我在访问 Express 路由器中的请求参数时遇到一些问题。
我的 server.js
文件有这个:
app.use('/user/:id/profile', require('./routes/profile');
这是我的 ./routes/profile.js
文件:
router.get('/', (req, res) => {
console.log(req.params.id);
}
但是控制台日志打印 undefined
。
我是新手,感觉我缺少一些关于路由工作原理的基本知识。
有人可以帮我吗?
这是我的全部 server.js
:
const express = require('express');
const app = express();
app.use(express.json());
app.use('/user/:id/profile', require('./routes/profile'));
app.listen(5000, () => console.log('Listening'));
这是我的全部 profile.js
:
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
console.log(req.params.id);
res.status(200).send('In profile route');
});
module.exports = router;
URL 参数不会暴露给路由器。您在这里有几个选择:
- 解析
req.originalUrl
获取用户id(不推荐)。req.originalUrl
不受路由器挂载点的影响,将保持/user/112/profile
或您访问过的任何 url。 - 添加一些中间件来暴露id(推荐)。您的新路线声明最终将如下所示:
(现在您可以在 profile.js
中使用 req.userId
)
app.use('/user/:id/profile', function(req, res, next) {
req.userId = req.params.id;
next();
}, require('./routes/profile'));
- 将挂载点从
/user/:id/profile
更改为/user
,然后编辑您的路由器以监听/:id/profile
(不推荐)。