Url as req.params in Express



我想使用express和mongo DB来查找基于URL的文档。

我的架构包括

bandUrl: {
type: String
}

这是我在Express服务器中的路由。

// Get Single Band By bandUrl
router.get('/bandUrl/:url', (req, res) => {
quoteGenerator.find({bandUrl: req.params.url}).then(gen => res.json(gen))
})

我将其中一个文档设置为将bandUrl设置为"http://localhost:3000/"。

我使用 URL 以外的其他东西测试了路由 - 只需使用字符串就可以正常工作......不过,我真的很想使用网址。有没有办法做到这一点?

这是我从应用程序中伪造/测试路线。.

const getFakeInfo = async () => {
try {
const response = await fetch(`/api/autoquotegenerators/bandUrl/http://localhost:3000/"`, {
method: 'GET',
})
const responseData = await response.json()
console.log(responseData)
} catch (error) {
console.log(error)
}
}

我认为 URL 中的额外斜杠是导致问题的原因。

感谢您的帮助!

你想用的是encodeURIComponent()。此函数转义所有特定于 URI 的字符,以便正确解释它们。您的请求代码应如下所示:

const response = await fetch(`/api/autoquotegenerators/bandUrl/${encodeURIComponent("http://localhost:3000/")}`, {
method: 'GET',
})

如果您想了解有关此功能的更多信息,可以在此处查看。

最新更新