Maison > développement back-end > Golang > Comment puis-je utiliser des expressions régulières pour un routage d'URL flexible dans Go ?

Comment puis-je utiliser des expressions régulières pour un routage d'URL flexible dans Go ?

Barbara Streisand
Libérer: 2024-11-26 20:45:15
original
353 Les gens l'ont consulté

How Can I Use Regular Expressions for Flexible URL Routing in Go?

Utilisation d'expressions régulières pour mapper des URL dans Go

Dans Go, l'utilisation d'expressions régulières pour faire correspondre les URL permet un routage d'URL plus flexible et plus expressif. Cependant, s'appuyer sur la fonction http.HandleFunc() à cette fin n'est pas idéal.

La fonction http.HandleFunc() est principalement destinée à faire correspondre des chemins fixes ou des sous-arbres enracinés. Il ne prend pas en charge l'utilisation d'expressions régulières. Pour y parvenir, vous devez enregistrer un gestionnaire dans un sous-arbre racine (par exemple, /), puis implémenter une correspondance et un routage d'expressions régulières personnalisés au sein du gestionnaire.

Considérez l'exemple suivant :

import (
  "fmt"
  "net/http"
  "regexp"
)

var rNum = regexp.MustCompile(`\d`)  // Matches URLs with digits
var rAbc = regexp.MustCompile(`abc`) // Matches URLs containing "abc"

func main() {
  http.HandleFunc("/", route)
  http.ListenAndServe(":8080", nil)
}

func route(w http.ResponseWriter, r *http.Request) {
  switch {
  case rNum.MatchString(r.URL.Path):
    digits(w, r)
  case rAbc.MatchString(r.URL.Path):
    abc(w, r)
  default:
    w.Write([]byte("Unknown Pattern"))
  }
}

func digits(w http.ResponseWriter, r *http.Request) {
  w.Write([]byte("Has digits"))
}

func abc(w http.ResponseWriter, r *http.Request) {
  w.Write([]byte("Has abc"))
}
Copier après la connexion

Ce code :

  1. Enregistre un gestionnaire avec la fonction http.HandleFunc() pour correspondre à l'URL racine (/).
  2. Utilise des objets d'expression régulière (rNum et rAbc) pour faire correspondre des modèles d'URL spécifiques dans la fonction de gestionnaire (route).
  3. Appelle différentes fonctions (chiffres ou abc) en fonction de la correspondance modèle.

Vous pouvez également utiliser des bibliothèques externes telles que Gorilla MUX pour obtenir un routage d'URL plus avancé et plus polyvalent. capacités.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal