Verwenden regulärer Ausdrücke für den URL-Abgleich in Go
In Go stellt das Paket net/http die Funktion http.HandleFunc zum Registrieren eines Handlers bereit Funktion auf ein bestimmtes URL-Muster umstellen. Diese Funktion kann jedoch nicht zum Abgleichen von URLs mithilfe regulärer Ausdrücke verwendet werden.
Um reguläre Ausdrücke für den URL-Abgleich zu verwenden, können Sie einen Handler in einem verwurzelten Teilbaum registrieren und innerhalb der Handler-Funktion weitere Regex-Abgleiche und Weiterleitungen durchführen.
Der folgende Code zeigt beispielsweise, wie man einen Handler für das Root-URL-Muster (/) registriert und reguläre Ausdrücke verwendet, um spezifische Übereinstimmungen zu erzielen Muster:
import ( "fmt" "net/http" "regexp" ) var ( rNum = regexp.MustCompile(`\d`) // Matches URLs with digits 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")) }
Alternativ können Sie Bibliotheken von Drittanbietern wie Gorilla MUX verwenden, die erweiterte URL-Routing- und Regexp-Matching-Funktionen bieten.
Das obige ist der detaillierte Inhalt vonWie kann ich reguläre Ausdrücke für den URL-Abgleich in Go verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!