Introduction
Le but de ce laboratoire est de démontrer comment analyser les URL en Go.
This tutorial is from open-source community. Access the source code
💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici
Le but de ce laboratoire est de démontrer comment analyser les URL en Go.
Le laboratoire nécessite d'analyser une URL d'exemple qui inclut un schéma, des informations d'authentification, un hôte, un port, un chemin, des paramètres de requête et un fragment de requête. L'URL analysée devrait être utilisée pour extraire les composants individuels de l'URL.
url
et net
doivent être importés.SplitHostPort
devrait être utilisée pour extraire le nom d'hôte et le port du champ Host
.ParseQuery
devrait être utilisée pour analyser les paramètres de requête dans une carte.## Exécution de notre programme d'analyse d'URL montre tous les différents
## morceaux que nous avons extraits.
$ go run url-parsing.go
postgres
user:pass
user
pass
host.com:5432
host.com
5432
/path
f
k=v
map[k:[v]]
v
Voici le code complet ci-dessous :
// Les URL fournissent un [moyen uniforme de localiser des ressources](https://adam.herokuapp.com/past/2010/3/30/urls_are_the_uniform_way_to_locate_resources/).
// Voici comment analyser les URL en Go.
package main
import (
"fmt"
"net"
"net/url"
)
func main() {
// Nous allons analyser cette URL d'exemple, qui inclut un
// schéma, des informations d'authentification, un hôte, un port, un chemin,
// des paramètres de requête et un fragment de requête.
s := "postgres://user:pass@host.com:5432/path?k=v#f"
// Analyse l'URL et assurez-vous qu'il n'y a pas d'erreurs.
u, err := url.Parse(s)
if err!= nil {
panic(err)
}
// Accéder au schéma est simple.
fmt.Println(u.Scheme)
// `User` contient toutes les informations d'authentification ; appelez
// `Username` et `Password` sur ceci pour obtenir les valeurs individuelles.
fmt.Println(u.User)
fmt.Println(u.User.Username())
p, _ := u.User.Password()
fmt.Println(p)
// Le `Host` contient à la fois le nom d'hôte et le port,
// s'il est présent. Utilisez `SplitHostPort` pour les extraire.
fmt.Println(u.Host)
host, port, _ := net.SplitHostPort(u.Host)
fmt.Println(host)
fmt.Println(port)
// Ici, nous extrayons le `path` et le fragment après
// le `#`.
fmt.Println(u.Path)
fmt.Println(u.Fragment)
// Pour obtenir les paramètres de requête au format chaîne de caractères `k=v`,
// utilisez `RawQuery`. Vous pouvez également analyser les paramètres de requête
// dans une carte. Les cartes de paramètres de requête analysées sont de
// chaînes de caractères à des slices de chaînes de caractères, donc accédez à `[0]`
// si vous ne voulez que la première valeur.
fmt.Println(u.RawQuery)
m, _ := url.ParseQuery(u.RawQuery)
fmt.Println(m)
fmt.Println(m["k"][0])
}
L'analyse d'URL nécessite d'analyser une URL d'exemple et d'extraire les composants individuels de l'URL. Les packages url
et net
sont utilisés pour analyser et extraire les composants de l'URL.