使用修改后的参数

时间:2017-07-30 22:17:44

标签: node.js express

我有一条像/users/HGB8J/这样的路线,如果用户不使用userTag的大写字母,我想进行301重定向。我正在尝试编写一个中间件,以确保多个路由的大写userTag,如下所示。

我的问题:

如何使用修改后的参数(在这种情况下为大写userTag)重定向到“原始网址”

function ensureTagIsUppercased(req, res, next) {
    let userTag = req.params.userTag
    if(userTag === userTag.toUpperCase())
        next()

    // How can I build the same URL just with the uppercased userTag?
    let url = ''
    return res.redirect(301, url)
}
router.get('/:userTag', ensureTagIsUppercased, profile)
router.get('/:userTag/refresh', ensureTagIsUppercased, refreshProfile)

示例:

用户请求=> https://example.com/users/HGB8J/请求可以通过

用户请求=> https://example.com/users/hgB8J/应将其重定向到https://example.com/users/HGB8J/

用户请求=> https://example.com/users/hgB8J/refresh应将其重定向到https://example.com/users/HGB8J/refresh

1 个答案:

答案 0 :(得分:0)

我到目前为止提出的最佳解决方案是使用upperCased参数替换baseUrl中的原始参数。但是,这可能会导致冲突,它会使URl的其他部分成为我的参数的一部分。

let redirectPath = req.originalUrl.replace(req.params.userTag, userTagUpperCased)
return res.redirect(301, redirectPath)