基本上,我正在尝试制作一个URL缩短器。因此,您输入一个URL,您将获得一个缩短的版本。所以我做example.com/generate/InsertUrlHere
.但是,如果我做类似example.com/generate/InsertUrl/Here
的事情,它不起作用。
目前,我有
app.get('/generate/:string', async (req, res) => {
res.send(req.params.string)
})
现在我知道上面的代码只接受 1 个输入,但在 URL 中我可以拥有从普通的旧google.com
到类似 google.com/1/2/3/4/5/6/7
的任何地方。
那么除了
app.get('/generate/:string/:string2', async (req, res) => {
res.send(req.params.string+'/'req.params.string2)
})
app.get('/generate/:urlToShorten(*)', (req, res, next) => {
console.log(req.originalUrl);
console.log(req.params.urlToShorten);
});
拨打 https://localhost:3000/generate/https://google.com 时
req.originalUrl
: /generate/https://google.com
urlToShorten
: https://google.com
为什么不发送编码的 URL,这样就不会发生导致终结点检测出现问题的/
。使用 encodeURIComponent(( 对其进行编码,以便用转义字符替换某些字符,然后对其进行解码以使用 decodeURIComponent(( 使用
您可以使用正则表达式来获取许多字符串,
例如Route: /generate/:strings(*)
Path: /generate/string1/string2/string3/string4
Key: strings, Value: string1/string2/string3/string4
然后你可以使用"/"作为分隔符,以便获取数组中的每个字符串