gpt4 book ai didi

javascript - Express路由器中的请求参数

转载 作者:行者123 更新时间:2023-11-30 23:58:43 25 4
gpt4 key购买 nike

我在访问快速路由器中的请求参数时遇到一些问题。

我的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 参数不会暴露给路由器。您在这里有几个选择:

  1. 解析req.originalUrl获取用户 ID(不推荐)。 req.originalUrl不受路由器挂载点的影响,并将保持为 /user/112/profile或您访问过的任何网址。
  2. 添加一些中间件来公开 ID(推荐)。您的新路线声明最终将如下所示:

(现在您可以在 req.userId 中使用 profile.js )

app.use('/user/:id/profile', function(req, res, next) {
req.userId = req.params.id;
next();
}, require('./routes/profile'));
  • 将挂载点从 /user/:id/profile 更改为至/user ,然后编辑您的路由器以监听 /:id/profile (不推荐)。
  • 关于javascript - Express路由器中的请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60886523/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com