无法获取(通过URL作为参数)

快递中的路由不能以完整的URL作为参数?

例如,

router.get("/new/:url", <some function>); 

当:url是https://www.google.com时,会给我提供无法GET错误

你不能得到像这种格式的完整的URL这种格式是用来接受客户端发送的参数

  router.get("/new/:url", <some function>); //you can get url as params req.params.url//Use your URL 

我认为你并不是很了解ExpressJS路由,因为你的urlhttps://www.google.com有/ /哪些是使用路由分离。

在你的情况下,我们知道ExpressJS支持正则expression式路由。 我认为以下正则expression式将为你工作

 app.get("/new/:protocol(http:|https:|ftp:)?/?/:url", <some function>); 

在上面的情况下,你已经用有限的协议http,https和ftp进行了封装。 您可以使用|添加更多的协议 分隔符(或条件),甚至你不知道什么是协议,然后你喜欢跟随

 app.get("/new/:protocol?/?/:url", <some function>); 

在上述两条路线中, ? 意味着路线工程文件的选项

在你的函数中,你可以在URL中追加协议

 function newUrl(req, res) { if(req.params.protocol) req.params.url = req.params.protocol + '//' + req.params.url; console.log(req.params.url); } 

在发送之前,您应该编码url参数。 你编码的例子是Http%3A%2F%2Fwww.google.com。 在服务器端,您可以解码参数以从之前获取值。