url - 在 Go 中添加查询字符串 url

标签 url go

我需要发送 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

可以看到?前没有/字符。

您知道如何在不手动操作字符串的情况下修复它吗?

https://play.golang.org/p/HsiTzHcvlQ

最佳答案

您可以使用 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))
}

https://play.golang.org/p/BIU29R_XBM

关于url - 在 Go 中添加查询字符串 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46195423/

相关文章:

ios - 如何播放 Blob URL 中链接的视频?

go - 在 RPC 调用中确定请求者的 IP 地址

recursion - 为什么 Go 计算斐波那契递归这么快?

go - 在 Go 中验证 Firebase 实时数据库的服务帐户

regex - IIS 请求过滤允许 URL

javascript - 无法获取 URL.createObjectURL 中的数据

go - 来自 PostForm 的 Gin Gonic 值数组

json.Marshal(struct) 返回 "{}"

asp.net - 在IIS7 404重定向页面中访问原始URL

javascript - 获取从javascript url传递的参数