如何在 URL shortener slug 中实现自定义端点

How to implement custom endpoints in a URL shortener slug

在我尝试过的所有 URL 缩短器中,没有人允许您添加 / 是一个 slug 而是 Rebrandly。例如:假设 bit.ly/abc 有效,但 bit.ly/abc/xyz 无效。但在 Rebrandly 中,rebrand.ly/abc/xyzrebrand.ly/abc 都有效。我尝试自己实现它,但由于我们必须使用参数 (: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

正如@Evert 所指出的,使用 req.path 而不是 req.params 是可行的方法。它将为您提供输入的完整路径。