golangの日記

Go言語を中心にプログラミングについてのブログ

Go言語(golang) ResolveReferenceを使って相対URLを絶対URLにする

golang.png


go言語の net/url パッケージにある ResolveReference 関数を使ってページの相対リンクを絶対URLにする





package main

import (
    "fmt"
    "log"
    "net/url"
)

func main() {
    a := []string{
        "https://example.com/001/002.html", // ベースとなるWebページのURL
        "/foo/bar/",                        // base タグの href に指定してあるURL
        "baz/003.html",                     // アンカータグの href に指定されている相対URL
    }

    var abs *url.URL
    for i, v := range a {
        u, err := url.Parse(v)
        if err != nil {
            log.Fatal(err)
        }
        if i > 0 {
            abs = abs.ResolveReference(u)
        } else {
            abs = u
        }
    }

    fmt.Println(abs.String()) // https://example.com/foo/bar/baz/003.html
}