Javascript 快速路由器中的请求参数

Javascript 快速路由器中的请求参数,javascript,express,express-router,Javascript,Express,Express Router,我在快速路由器中访问请求参数时遇到问题 我的server.js文件包含以下内容: app.use('/user/:id/profile', require('./routes/profile'); 这在我的/routes/profile.js文件中: router.get('/', (req, res) => { console.log(req.params.id); } 但是控制台日志打印未定义的。 我是一个新来表达的人,我觉得我缺少了一些关于路由工作原理的基本知识。 有人能

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

我的
server.js
文件包含以下内容:

app.use('/user/:id/profile', require('./routes/profile');
这在我的
/routes/profile.js
文件中:

router.get('/', (req, res) => {
    console.log(req.params.id);
}
但是控制台日志打印未定义的
。 我是一个新来表达的人,我觉得我缺少了一些关于路由工作原理的基本知识。 有人能帮我吗

这是我的完整
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'));
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;
这是我完整的
profile.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'));
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

  • 将装载点从
    /user/:id/profile
    更改为
    /user
    ,然后编辑路由器以侦听
    /:id/profile
    (不推荐)

  • URL参数不向路由器公开。您在这里有几个选项:

  • 解析
    req.originalUrl
    以获取用户id(不推荐)
    req.originalUrl
    不受路由器装载点的影响,将保持为
    /user/112/profile
    或您访问的任何url
  • 添加一些中间件以公开id(推荐)。您的新路线声明最终将如下所示:
  • (现在您可以在
    profile.js
    中使用
    req.userId

  • 将装载点从
    /user/:id/profile
    更改为
    /user
    ,然后编辑路由器以侦听
    /:id/profile
    (不推荐)

  • 你访问的网址是什么?您是否可以打印出整个
    req.params
    ?你能发送完整的
    profile.js
    文件吗?@Aplet123我正在点击
    http://localhost:5000/user/112/profile
    。除了require语句和
    module.exports=router
    @Aplet123是的,我能做
    console.log(req.params)
    但这也是空的。那么您介意分享所有这些信息吗?@Aplet123编辑了我的问题,将完整的文件包括在内。您访问的是哪个URL?您是否可以打印出整个
    req.params
    ?你能发送完整的
    profile.js
    文件吗?@Aplet123我正在点击
    http://localhost:5000/user/112/profile
    。除了require语句和
    module.exports=router
    @Aplet123是的,我能做
    console.log(req.params)
    但这也是空的,那么你介意分享所有这些信息吗?@Aplet123编辑了我的问题,将完整的文件包括在内。我见过很多例子,人们使用选项3之类的东西,他们在路由器中有参数。为什么不推荐这种方法?我认为
    /profile
    不是
    /user/:id
    下的唯一内容,所以最好不要装载到整个
    /user
    。另外,方法2的结果通常是更干净的代码。@AneeshandTime很高兴我能帮助您!我见过很多例子,人们使用选项3,在路由器中有参数。为什么不推荐这种方法?我认为
    /profile
    不是
    /user/:id
    下的唯一内容,所以最好不要装载到整个
    /user
    。另外,方法2的结果通常是更干净的代码。@AneeshandTime很高兴我能帮助您!