我想获取一个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()满足和时,它将其视为新参数
有谁知道我该如何解决这个问题
先感谢您。
最佳答案
您需要对查询字符串like this进行URL编码:
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
。您可以将该字符串设置为
RawQuery
值的url.URL
,如果您像以前那样访问查询,它将具有正确的值。如果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 - Golang : Passing a URL as a GET parameter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30662512/