node.js - 如何在 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
即使数据在那里,我也会得到。
解决方案
正如@Evert 所指出的,使用req.path
代替req.params
是要走的路。它会给你输入的整个路径。
推荐阅读
- typescript - switch 语句中的打字稿类型生成问题
- python-3.x - 在 Pandas 中读取 CSV 时将数字转换为小时和分钟
- html - 当我有一个悬停菜单时,如何添加部分边距?
- arduino - Arduino中的字符串比较
- python - 如何将 JSON 转换为 CSV?
- java - 在 Spring Data JDBC 中绕过 @CreatedDate 和 @LastModifiedDate
- excel - 从非连续单元格复制数据
- flutter - 在 android 5 设备中调试时出现颤振错误
- python - 无法连接 sqlite3 中的两个属性
- ios - SwiftUI,按下时如何更改视图(不使用按钮)颜色?