2021年03月18日(木) [長年日記]
■ [go] GoでURLのパスを結合する
GolangでURLのパスをpath.Join()で結合しようとするとうまくいかない。
path.Join("http://localhost/", "api")
の結果は「http:/localhost/api」となり、ホスト名の前のスラッシュが1つ削除されてしまう。path.Join()はリファレンスに「The result is Cleaned.」とあり単に結合するだけではないため。
URLのパスを結合するには、例えばURL型を使って次のようにする。
func MyJoin(base string, p string) (string, error) {
u, err := url.Parse(base)
if err != nil {
return "", err
}
u.Path = path.Join(u.Path, p)
return u.String(), nil
}
なお、path.Join()は末尾のスラッシュも削除するので、MyJoin()の結果にも末尾にスラッシュが付かないことに注意。
[ツッコミを入れる]