我试图在Golang中传递一个URL作为参数,但我一直无法找到所有我看过的教程中的解决方案。问题是,我只能得到url返回减去一个关键的正斜杠。如何在Golang路由中将URL作为参数传递?

我的处理程序是这样的:

router.HandleFunc("/new/{url}", createURL) 

因此请求将如下所示:

www.myapp.heroku.com/new/https://www.google.com 

但是,我的结果是缺少一个斜线的网址:

http:/www.google.com 

我确定它可能与RFC3986有关,但是有没有办法传递url?

2017-04-26 Andy Morgan

+4

将它传递给查询参数并对其进行urlencode。因为取决于你用什么多路解析器来解析,可能会有不同的解释。例如:'?url = https%3A%2F%2Fwww.google.com%2F' –

+0

@BogdanIulianBursuc唯一的问题是用户只会在/ new参数后传递url。所以,他们首先要访问www.myapp.heroku.com,然后得到一条指令,在/ new之后传递url:'www.myapp.heroku.com/new/https://www.google .com'。不幸的是,我不知道如何将它传递给查询参数。 –

+0

它应该仍然是URL编码的。给出的示例网址不是有效的网址,因此您无法保证它们可以正常使用任何解析器。 –