Les URLs fournissent une manière uniforme de localiser des ressources. Voici comment analyser les URLs en Go. |
|
package main
|
|
import "fmt"
import "net"
import "net/url"
|
|
Nous allons analyser cette URL d’exemple, qui inclue un protocole (scheme en anglais), des informations d’authentification, un hôte, un port, un chemin, des paramètres de requêtes et un fragment de requête |
func main() {
|
s := "postgres://user:pass@host.com:5432/path?k=v#f"
|
|
On parse l’URL et on s’assure qu’il n’y a pas d’erreurs. |
u, err := url.Parse(s)
if err != nil {
panic(err)
}
|
On accède facilement au protocole. |
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)
|
Ici on extraie le chemin ( |
fmt.Println(u.Path)
fmt.Println(u.Fragment)
|
Pour obtenir les paramètres de requête dans une chaine au format |
fmt.Println(u.RawQuery)
m, _ := url.ParseQuery(u.RawQuery)
fmt.Println(m)
fmt.Println(m["k"][0])
}
|
Exécuter notre programme d’analyse d’URL montre tous les différentes morceaux que nous avons extrait. |
$ go run url-parsing.go
postgres
user:pass
user
pass
host.com:5432
host.com
5432
/path
f
k=v
map[k:[v]]
v
|
Exemple suivant: Empreinte SHA1.