Golang:将 URL 作为 GET 参数传递
Golang: Passing a URL as a GET parameter
我想得到一个URL作为参数
例如:example.com?domain=site.come?a=val&b=val
使用时的问题
query := r.URL.Query()
domain := query.Get("domain")
获取它给出的域名 domain=site.come?a=val
我认为是因为当 r.URL.Query() 遇到 & 它认为它是一个新参数
有谁知道我该如何解决这个问题
提前谢谢你。
您需要URL-编码您的查询字符串,like this:
package main
import (
"fmt"
"net/url"
)
func main() {
query := make(url.Values)
query.Add("domain", "example.com?foo=bar")
fmt.Println(query.Encode())
}
输出 domain=example.com%3Ffoo%3Dbar
.
您可以将该字符串设置为 url.URL
值的 RawQuery
,然后如果您像以前那样访问查询,它将具有正确的值。
如果 URL 编码正确,那么您应该能够 运行 使用您的 URL 值 following code 并得到正确的结果:
package main
import (
"fmt"
"net/url"
)
func main() {
query := make(url.Values)
query.Add("domain", "example.com?foo=bar&abc=123&jkl=qwe")
url := &url.URL{RawQuery: query.Encode(), Host: "domain.com", Scheme: "http"}
fmt.Println(url.String())
abc := url.Query().Get("domain")
fmt.Println(abc)
}
这会打印:
http://domain.com?domain=example.com%3Ffoo%3Dbar%26abc%3D123%26jkl%3Dqwe
(带有名为 "domain" 的编码参数的完整 URI)
example.com?foo=bar&abc=123&jkl=qwe
(该参数的解码值)
我想得到一个URL作为参数
例如:example.com?domain=site.come?a=val&b=val
使用时的问题
query := r.URL.Query()
domain := query.Get("domain")
获取它给出的域名 domain=site.come?a=val
我认为是因为当 r.URL.Query() 遇到 & 它认为它是一个新参数
有谁知道我该如何解决这个问题
提前谢谢你。
您需要URL-编码您的查询字符串,like this:
package main
import (
"fmt"
"net/url"
)
func main() {
query := make(url.Values)
query.Add("domain", "example.com?foo=bar")
fmt.Println(query.Encode())
}
输出 domain=example.com%3Ffoo%3Dbar
.
您可以将该字符串设置为 url.URL
值的 RawQuery
,然后如果您像以前那样访问查询,它将具有正确的值。
如果 URL 编码正确,那么您应该能够 运行 使用您的 URL 值 following code 并得到正确的结果:
package main
import (
"fmt"
"net/url"
)
func main() {
query := make(url.Values)
query.Add("domain", "example.com?foo=bar&abc=123&jkl=qwe")
url := &url.URL{RawQuery: query.Encode(), Host: "domain.com", Scheme: "http"}
fmt.Println(url.String())
abc := url.Query().Get("domain")
fmt.Println(abc)
}
这会打印:
http://domain.com?domain=example.com%3Ffoo%3Dbar%26abc%3D123%26jkl%3Dqwe
(带有名为 "domain" 的编码参数的完整 URI)
example.com?foo=bar&abc=123&jkl=qwe
(该参数的解码值)