Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/goware/urlx
Golang pkg for URL parsing and normalization
https://github.com/goware/urlx
Last synced: 13 days ago
JSON representation
Golang pkg for URL parsing and normalization
- Host: GitHub
- URL: https://github.com/goware/urlx
- Owner: goware
- License: mit
- Created: 2015-03-27T13:58:59.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2022-06-22T11:34:05.000Z (over 2 years ago)
- Last Synced: 2024-08-01T19:45:55.050Z (3 months ago)
- Language: Go
- Homepage:
- Size: 37.1 KB
- Stars: 157
- Watchers: 9
- Forks: 17
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# URLx
[Golang](http://golang.org/) pkg for URL parsing and normalization.1. [Parsing URL](#parsing-url) ([GoDoc](https://godoc.org/github.com/goware/urlx#Parse))
2. [Normalizing URL](#normalizing-url) ([GoDoc](https://godoc.org/github.com/goware/urlx#Normalize))
3. [Splitting host:port from URL](#splitting-hostport-from-url) ([GoDoc](https://godoc.org/github.com/goware/urlx#SplitHostPort))
4. [Resolving IP address from URL](#resolving-ip-address-from-url) ([GoDoc](https://godoc.org/github.com/goware/urlx#Resolve))[![GoDoc](https://godoc.org/github.com/goware/urlx?status.png)](https://godoc.org/github.com/goware/urlx)
[![Travis](https://travis-ci.org/goware/urlx.svg?branch=master)](https://travis-ci.org/goware/urlx)## Parsing URL
The [urlx.Parse()](https://godoc.org/github.com/goware/urlx#Parse) is compatible with the same function from [net/url](https://golang.org/pkg/net/url/#Parse) pkg, but has slightly different behavior. It enforces default scheme and favors absolute URLs over relative paths.
### Difference between [urlx](https://godoc.org/github.com/goware/urlx#Parse) and [net/url](https://golang.org/pkg/net/url/#Parse)
github.com/goware/urlx
net/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
```go
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()](https://godoc.org/github.com/goware/urlx#Normalize) function normalizes the URL using the predefined subset of [Purell](https://github.com/PuerkitoBio/purell) flags.
### Usage
```go
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()](https://godoc.org/github.com/goware/urlx#SplitHostPort) is compatible with the same function from [net](https://golang.org/pkg/net/) pkg, but has slightly different behavior. It doesn't remove brackets from `[IPv6]` host.
### Usage
```go
import "github.com/goware/urlx"func main() {
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()](https://godoc.org/github.com/goware/urlx#Resolve) is compatible with [ResolveIPAddr()](https://golang.org/pkg/net/#ResolveIPAddr) from [net](https://golang.org/pkg/net/).
### Usage
```go
url, _ := urlx.Parse("localhost")
ip, _ := urlx.Resolve(url)fmt.Print(ip)
// Prints 127.0.0.1
```## License
URLx is licensed under the [MIT License](./LICENSE).