【问题标题】:Express.JS - Dynamic Route AliasExpress.JS - 动态路由别名
【发布时间】:2017-01-07 03:02:16
【问题描述】:

我正在设计一个社区网站,允许用户登录并与其他人交朋友,他们的帐户可以通过以下途径访问:

https://domain.com/en/community/id/:userid AND
https://domain.com/en/community/users/:username

但是,我希望用户始终使用第一个 URL,因为它看起来更美观。我可以直接从 ID 路由重定向,但是对于计划好的朋友和群组,我最终会得到如下 URL:

https://domain.com/en/community/id/:userid/friends
https://domain.com/en/community/users/:username/friends
https://domain.com/en/community/id/:userid/groups
https://domain.com/en/community/users/:username/groups

如何始终从 /id/:userid 重定向到 /users/:username 但保留 URL 的其余部分?

第一个任务是匹配所有带有/id/:userid 的URL,以使用相同的路由回调。

第二个任务是将/id/:userid替换为/users/:username

这两个任务可以用正则表达式来完成吗?

非常感谢。

【问题讨论】:

    标签: regex node.js express replace


    【解决方案1】:

    好吧,事实证明,允许用户 ID 别名非常简单。

    我可以使用星号来捕获所有其他 URL,然后使用简单的 RegExp 替换调用将 ID 替换为用户名。

    app.get('/:lang/community/id/:id/*', function(req, res){
        var id = req.params.id;
        User.getByID(id, function(err, result, user){
            var url = req.url.replace(new RegExp('/id/'+id, 'g'), '/users/'+user.name);
            res.redirect(url);
        }
    });
    

    这是我能想到的最佳解决方案。我希望它可以帮助其他人。

    【讨论】:

      猜你喜欢
      • 2016-05-28
      • 2013-05-22
      • 2014-10-26
      • 2020-08-03
      • 2012-12-17
      • 1970-01-01
      • 2017-08-16
      • 2020-12-13
      相关资源
      最近更新 更多