Le modèle d'URL auquel vous enregistrez vos gestionnaires est décrite dans le type http.ServeMux
:
modèles nom fixe, chemins enracinés, comme « /favicon.ico », ou sous-arbres enracinés, comme «/images/"(notez la barre oblique). Les motifs plus longs ont la priorité sur les plus courts, de sorte que s'il y a des gestionnaires enregistrés pour "/ images /" et "/ images/thumbnails /", ce dernier sera appelé pour les chemins commençant par "/ images/thumbnails /" et l'ancien recevra des demandes pour tous les autres chemins dans le sous-arbre "/ images /". Notez que, comme un motif se terminant par une barre oblique nomme un sous-arbre enraciné, le motif "/" correspond à tous les chemins qui ne correspondent pas aux autres motifs enregistrés, pas seulement l'URL avec Path == "/".
Donc, malheureusement, il n'y a pas de modèle qui correspond seulement à la racine ("/"
).
Mais vous pouvez facilement vérifier dans votre gestionnaire, et faire ce que vous voulez si le chemin de la requête n'est pas la racine:
func serveRest(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/" {
w.Write([]byte("Not root!"))
return
}
w.Write([]byte("Hi, this is the root!"))
}
Si vous voulez retourner HTTP 404 Not found
erreur pour les non-racines:
func serveRest(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/" {
http.NotFound(w, r)
return
}
w.Write([]byte("Hi!"))
}
And Go tutoriel: https://tour.golang.org/
consultez également le Go étiquette info ici sur SO, il a une section Go Tutoriels.
Merci @icza, je l'apprécie. – Shailesh