我需要发送 http 请求到 https://some-domain.com/getsomething/?id=myID
我有 url,需要向其添加查询参数。这是我的 Go 代码
baseUrl := "https://some-domain.com"
relativeUrl := "/getsomething/"
url, _ := url.Parse(baseUrl)
url.Path = path.Join(url.Path, relativeUrl)
// add parameter to query string
queryString := url.Query()
queryString.Set("id", "1")
// add query to url
url.RawQuery = queryString.Encode()
// print it
fmt.Println(url.String())
在输出中我看到这个 url:https://some-domain.com/getsomething?id=1
这是必需的:https://some-domain.com/getsomething/?id=1
可以看到?
前没有/
字符。
您知道如何在不手动操作字符串的情况下修复它吗?
最佳答案
您可以使用 ResolveReference .
package main
import (
"fmt"
"log"
"net/url"
)
func main() {
relativeUrl := "/getsomething/"
u, err := url.Parse(relativeUrl)
if err != nil {
log.Fatal(err)
}
queryString := u.Query()
queryString.Set("id", "1")
u.RawQuery = queryString.Encode()
baseUrl := "https://some-domain.com"
base, err := url.Parse(baseUrl)
if err != nil {
log.Fatal(err)
}
fmt.Println(base.ResolveReference(u))
}
关于url - 在 Go 中添加查询字符串 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46195423/