|
URLs cung cấp một cách đồng nhất để định vị tài nguyên. Dưới đây là cách phân tích URLs trong Go. |
|
![]()
package main |
|
import ( "fmt" "net" "net/url" ) |
|
func main() { |
|
|
Chúng ta sẽ phân tích cú pháp URL ví dụ này, bao gồm một scheme, thông tin xác thực, host (máy chủ), port (cổng), path (đường dẫn), tham số truy vấn và phần đánh dấu truy vấn. |
s := "postgres://user:pass@host.com:5432/path?k=v#f"
|
|
Phân tích URL và đảm bảo không có lỗi. |
u, err := url.Parse(s)
if err != nil {
panic(err)
}
|
|
Truy cập scheme khá đơn giản. |
fmt.Println(u.Scheme)
|
|
|
fmt.Println(u.User)
fmt.Println(u.User.Username())
p, _ := u.User.Password()
fmt.Println(p)
|
|
|
fmt.Println(u.Host)
host, port, _ := net.SplitHostPort(u.Host)
fmt.Println(host)
fmt.Println(port)
|
|
Ở đây chúng ta trích xuất đường dẫn và đoạn sau dấu |
fmt.Println(u.Path)
fmt.Println(u.Fragment)
|
|
Để lấy các tham số truy vấn trong chuỗi với định dạng |
fmt.Println(u.RawQuery)
m, _ := url.ParseQuery(u.RawQuery)
fmt.Println(m)
fmt.Println(m["k"][0])
}
|
|
Khi chạy chương trình phân tích URL của chúng ta, nó sẽ hiện thị tất cả các phần khác nhau mà chúng ta trích xuất được. |
$ go run url-parsing.go postgres user:pass user pass host.com:5432 host.com 5432 /path f k=v map[k:[v]] v |
Ví dụ tiếp theo: SHA256 Hashes.