Skip to content

Latest commit

History

39 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

URLx

Golang pkg for URL parsing and normalization.

  1. Parsing URL (GoDoc)
  2. Normalizing URL (GoDoc)
  3. Splitting host:port from URL (GoDoc)
  4. Resolving IP address from URL (GoDoc)

GoDocTravis

Parsing URL

The urlx.Parse() is compatible with the same function from net/url pkg, but has slightly different behavior. It enforces default scheme and favors absolute URLs over relative paths.

Difference between urlx and net/url

github.com/goware/urlxnet/url
urlx.Parse("example.com")

&url.URL{ Scheme: "http", Host: "example.com", Path: "", }

url.Parse("example.com")

&url.URL{ Scheme: "", Host: "", Path: "example.com", }

urlx.Parse("localhost:8080")

&url.URL{ Scheme: "http", Host: "localhost:8080", Path: "", Opaque: "", }

url.Parse("localhost:8080")

&url.URL{ Scheme: "localhost", Host: "", Path: "", Opaque: "8080", }

urlx.Parse("user.local:8000/path")

&url.URL{ Scheme: "http", Host: "user.local:8000", Path: "/path", Opaque: "", }

url.Parse("user.local:8000/path")

&url.URL{ Scheme: "user.local", Host: "", Path: "", Opaque: "8000/path", }

Usage

import"github.com/goware/urlx"funcmain() {
url, _:=urlx.Parse("example.com")
// url.Scheme == "http"// url.Host == "example.com"fmt.Print(url)
// Prints http://example.com
}

Normalizing URL

The urlx.Normalize() function normalizes the URL using the predefined subset of Purell flags.

Usage

import"github.com/goware/urlx"funcmain() {
url, _:=urlx.Parse("localhost:80///x///y/z/../././index.html?b=y&a=x#t=20")
normalized, _:=urlx.Normalize(url)
fmt.Print(normalized)
// Prints http://localhost/x/y/index.html?a=x&b=y#t=20
}

Splitting host:port from URL

The urlx.SplitHostPort() is compatible with the same function from net pkg, but has slightly different behavior. It doesn't remove brackets from [IPv6] host.

Usage

import"github.com/goware/urlx"funcmain() {
url, _:=urlx.Parse("localhost:80")
host, port, _:=urlx.SplitHostPort(url)
fmt.Print(host)
// Prints localhostfmt.Print(port)
// Prints 80
}

Resolving IP address from URL

The urlx.Resolve() is compatible with ResolveIPAddr() from net.

Usage

url, _:=urlx.Parse("localhost")
ip, _:=urlx.Resolve(url)
fmt.Print(ip)
// Prints 127.0.0.1

License

URLx is licensed under the MIT License.

About

Golang pkg for URL parsing and normalization

Resources

Stars

162 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages