首页 > 解决方案 > 如何在 URL 缩短器 slug 中实现自定义端点

问题描述

在我尝试过的所有 URL 缩短器中,没有人允许您添加/的是 slug,而是 Rebrandly。例如:比方说bit.ly/abc,这行得通,但是bit.ly/abc/xyz,这行不通。但是在 Rebrandlyrebrand.ly/abc/xyz和 &rebrand.ly/abc中,两者都有效。我尝试自己实现它,但由于我们必须使用 params ( :slug),所以当我访问时domain.com/abc/xyz,它说cannot get domain.com/abc/xyz即使 slug 已在数据库中注册。

编辑:

router.get('/:id', async (req, res) => {
    try {
        const ogDetails = await viewOg(req.params.id)

        if (ogDetails === undefined) res.redirect('/')
        else if (ogDetails) res.render('view', { og: ogDetails })
    } catch (error) {
        console.error(error, 'error')
    }
})

在这里,如果:id, 匹配类似的东西abc,它会按预期工作。但是假设它有类似的东西abc/xyz,那么cannot get path /abc/xyz即使数据在那里,我也会得到。

标签: node.jsurlredirectbackend

解决方案


正如@Evert 所指出的,使用req.path代替req.params是要走的路。它会给你输入的整个路径。


推荐阅读