Urlx
Golang pkg for URL parsing and normalization
Install / Use
/learn @goware/UrlxREADME
URLx
Golang pkg for URL parsing and normalization.
- Parsing URL (GoDoc)
- Normalizing URL (GoDoc)
- Splitting host:port from URL (GoDoc)
- Resolving IP address from URL (GoDoc)
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
<table> <thead> <tr> <th><a href="https://godoc.org/github.com/goware/urlx#Parse">github.com/goware/urlx</a></th> <th><a href="https://golang.org/pkg/net/url/#Parse">net/url</a></th> </tr> </thead> <tr> <td> <pre> urlx.Parse("example.com")&url.URL{ Scheme: "http", Host: "example.com", Path: "", } </pre>
</td> <td> <pre> url.Parse("example.com")&url.URL{ Scheme: "", Host: "", Path: "example.com", } </pre>
</td> </tr> <tr> <td> <pre> urlx.Parse("localhost:8080")&url.URL{ Scheme: "http", Host: "localhost:8080", Path: "", Opaque: "", } </pre>
</td> <td> <pre> url.Parse("localhost:8080")&url.URL{ Scheme: "localhost", Host: "", Path: "", Opaque: "8080", } </pre>
</td> </tr> <tr> <td> <pre> urlx.Parse("user.local:8000/path")&url.URL{ Scheme: "http", Host: "user.local:8000", Path: "/path", Opaque: "", } </pre>
</td> <td> <pre> url.Parse("user.local:8000/path")&url.URL{ Scheme: "user.local", Host: "", Path: "", Opaque: "8000/path", } </pre>
</td> </tr> </table>Usage
import "github.com/goware/urlx"
func main() {
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"
func main() {
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"
func main() {
url, _ := urlx.Parse("localhost:80")
host, port, _ := urlx.SplitHostPort(url)
fmt.Print(host)
// Prints localhost
fmt.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.
Related Skills
node-connect
352.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。

