使用Expresspath处理请求参数中的斜杠字符

我目前正在使用Express来处理URL缩短应用程序。 我希望用户能够input这样的URL:

https://www.exampleurlshortener.com/new/https://www.google.com 

问题是每当我尝试使用Express来指定参数时,它只会提取“https:”部分,之后的所有内容都会丢失,因为2个反斜杠正在注册为一个新的路由:

 app.get('/new/:url', (req, res) => { console.log(req.params.url) // outputs 'https:' 

我想指定每个部分作为一个新的参数,但如果inner是空白的这最终将投掷404。我需要检查内部是否使用此方法是空白的,否则用户将能够键入https:/something/www.google.com

 app.get('/new/:prot/:inner/:address', (req, res) => { // throws 404 on valid addresses 

有没有简单的方法来解决这个,我失踪了? 是否可以在请求的某个地方查看完整的URL? 或者可以忽略反斜杠?

您可以使用expression式来表示URL占位符:

 app.get('/new/:url(.*)', (req, res) => { console.log(req.params.url) // will output 'https://www.google.com'