Seems to me that this code from the README might be helpful, but this might not be everything you need:
Additionally, there is a method for taking the parts of the URI individually, as well as a convenience method taking host and path which constructs a valid HTTP URL:
For my use case joinpath is enough but you are right @sirex URL joining is more complicated. Unfortunately I haven’t find a Julia package which provides such a function.
With Python
$ ipython
Python 3.6.6 | packaged by conda-forge | (default, Jul 26 2018, 09:55:02)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.0.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from urllib.parse import urljoin as joinurl
In [2]: joinurl("https://example.com/", "http://foo.bar/")
Out[2]: 'http://foo.bar/'
In [3]: joinurl("https://example.com/a/b", "..")
Out[3]: 'https://example.com/'
In [4]: joinurl("https://example.com/a/b", "c")
Out[4]: 'https://example.com/a/c'
In [5]: joinurl("https://example.com/a/b", "/c")
Out[5]: 'https://example.com/c'
In [6]: joinurl("https://example.com/a/b?x=1", "c")
Out[6]: 'https://example.com/a/c'
In [7]: joinurl("a/b/c", "d/e")
Out[7]: 'a/b/d/e'
This was never a good way to join parts of a URL and it just happened to work on UNIX systems where the path separator is /. It would always have produced what you’re seeing on Windows and if it did something else, that’s pretty much an accident. Maybe some UNC drive stuff? Who knows. Don’t use joinpath for this. The entire reason for joinpath to exist is so that it can use platform-specific path separators and handle absolute and relative paths. Neither of those is an issue for URLs. Just join the parts with literal slashes between.