3 回答
TA贡献1936条经验 获得超6个赞
是的,标准库可以用net/url包来做到这一点。示例(来自标准库):
package main
import (
"fmt"
"log"
"net/url"
)
func main() {
u, err := url.Parse("../../..//search?q=dotnet")
if err != nil {
log.Fatal(err)
}
base, err := url.Parse("http://example.com/directory/")
if err != nil {
log.Fatal(err)
}
fmt.Println(base.ResolveReference(u))
}
请注意,您只需要解析一次绝对 URL,然后就可以反复重用它。
TA贡献2016条经验 获得超9个赞
您还可以使用baseURL 的Parse方法来提供相对或绝对 URL。
package main
import (
"fmt"
"log"
"net/url"
)
func main() {
// parse only base url
base, err := url.Parse("http://example.com/directory/")
if err != nil {
log.Fatal(err)
}
// and then use it to parse relative URLs
u, err := base.Parse("../../..//search?q=dotnet")
if err != nil {
log.Fatal(err)
}
fmt.Println(u.String())
}
在Go Playground上试试吧。
TA贡献1891条经验 获得超3个赞
我认为您正在寻找ResolveReference
方法。
import (
"fmt"
"log"
"net/url"
)
func main() {
u, err := url.Parse("../../..//search?q=dotnet")
if err != nil {
log.Fatal(err)
}
base, err := url.Parse("http://example.com/directory/")
if err != nil {
log.Fatal(err)
}
fmt.Println(base.ResolveReference(u))
}
// gives: http://example.com/search?q=dotnet
我也将它用于我的爬虫,并且非常有效!
- 3 回答
- 0 关注
- 136 浏览
添加回答
举报