Issue
Is there a way in Go to combine URL paths similarly as we can do with filepaths using path.Join()
?
For example see e.g. Combine absolute path and relative path to get a new absolute path.
When I use path.Join("http://foo", "bar")
, I get http:/foo/bar
.
See in Golang Playground.
Solution
The function path.Join expects a path, not a URL. Parse the URL to get a path and join with that path:
u, err := url.Parse("http://foo")
u.Path = path.Join(u.Path, "bar.html")
s := u.String() // prints http://foo/bar.html
If you are combining more than the path (scheme or host for example) or the string is more than the path (it includes a query string for example), then use ResolveReference.
Answered By – Bayta Darell
Answer Checked By – Senaida (GoLangFix Volunteer)