3 回答

TA貢獻1936條經驗 獲得超7個贊
是的,標準庫可以用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 關注
- 204 瀏覽
添加回答
舉報