gpt4 book ai didi

url - 将 URL 路径与 path.Join() 组合

转载 作者:IT老高 更新时间:2023-10-28 12:59:55 28 4
gpt4 key购买 nike

Go 中有没有一种方法可以像我们使用 path.Join() 来组合 URL 路径一样?

例如参见例如Combine absolute path and relative path to get a new absolute path .

当我使用 path.Join("http://foo", "bar") 时,我得到 http:/foo/bar

Golang Playground .

最佳答案

函数path.Join需要一个路径,而不是 URL。 Parse获取路径并加入该路径的 URL:

u, err := url.Parse("http://foo")
if err != nil { log.Fatal(err) }
u.Path = path.Join(u.Path, "bar.html")
s := u.String()
fmt.Println(s) // prints http://foo/bar.html

使用 url.JoinPath Go 1.19 或更高版本中的函数:

s, err := url.JoinPath("http://foo", "bar.html")
if err != nil { log.Fatal(err) }
fmt.Println(s) // prints http://foo/bar.html

使用 ResolveReference如果您从基本 URL 解析 URI 引用。此操作不同于简单的路径连接:引用中的绝对路径替换整个基本路径;基本路径被修剪回连接操作之前的最后一个斜杠。

base, err := url.Parse("http://foo/quux.html")
if err != nil {
log.Fatal(err)
}
ref, err := url.Parse("bar.html")
if err != nil {
log.Fatal(err)
}
u := base.ResolveReference(ref)
fmt.Println(u.String()) // prints http://foo/bar.html

请注意,基本 URL 中的 quux.html 不会出现在已解析的 URL 中。

关于url - 将 URL 路径与 path.Join() 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34668012/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com