首页 > 解决方案 > 如何始终将某个路径参数替换为 node.js 中的另一个值?

问题描述

我的代码示例:

router.get('/name/:name/height', (req,res) => {
    ...
}

router.get('/name/:name/weight', (req,res) => {
    ...
}

router.get('/age/:age/height', (req,res) => {
    ...
}

router.get('/age/:age/weight', (req,res) => {
    ...
}

在这里,当nameas 出现时foo,我想将其替换为,bar因为foobar.

但是在所有块中重复插入 if-replace 代码看起来并不好。

有没有其他选择来实现这个?


我试过:

router.use('/name/:name', (req, res, next) => {
    let name = req.params.name
    if (name === 'foo') {
        console.log("HHHHHHHHHHHHHHHHHHH")
        req.params.name = 'bar'
    }
    next()
    }
)

HHH...日志已打印,但 req.params.name 似乎没有更新。

标签: javascriptnode.jsexpress

解决方案


如果foo确实是 的别名bar,我建议您使用以下内容301 Redirect响应foo端点响应:

router.get('/name/foo/:path', (req, res) => {
  res.redirect(301, '/name/bar/' + req.path);
});

推荐阅读