无法获取(通过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>);
在上述两条路线中, ?
意味着路线工程文件的选项
- /new/www.google.com
- / new / https://www.google.com
在你的函数中,你可以在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。 在服务器端,您可以解码参数以从之前获取值。