Heim >Backend-Entwicklung >Golang >Wie ordne ich URLs mit regulären Ausdrücken in Go zu?

Wie ordne ich URLs mit regulären Ausdrücken in Go zu?

DDD
DDDOriginal
2024-12-10 16:09:14279Durchsuche

How to Match URLs with Regular Expressions in Go?

Abgleichen von URLs mit regulären Ausdrücken in Go

In Go ist http.HandleFunc() für die Verarbeitung spezifischer URL-Muster konzipiert. Es eignet sich jedoch nicht zum Abgleichen von Mustern mithilfe regulärer Ausdrücke.

Alternative Lösungen:

Erwägen Sie stattdessen die folgenden Lösungen:

  1. HandleFunc() mit Rooted Subtree: Weisen Sie einem Root-Teilbaum einen Handler zu (z. B. „/“) und führen Sie den Regexp-Abgleich innerhalb der Handler-Funktion selbst durch.
// Match everything
http.HandleFunc("/", route)

var rNum = regexp.MustCompile(`\d`)  // Has digit(s)

func route(w http.ResponseWriter, r *http.Request) {
    if rNum.MatchString(r.URL.Path) {
        digits(w, r)
    } else {
        w.Write([]byte("No digits found"))
    }
}
  1. Externe Bibliothek: Nutzen Sie externe Bibliotheken wie Gorilla MUX (github.com/gorilla /mux), das mehr Kontrolle über das Routing bietet und den Abgleich regulärer Ausdrücke unterstützt.

Zum Beispiel mit Gorilla MUX:

r := mux.NewRouter()
r.HandleFunc("/digits", digitsHandler).Methods("GET")
r.HandleFunc("/abc", abcHandler).Methods("POST")

http.Handle("/", r)

Jede dieser Methoden ermöglicht einen detaillierteren URL-Abgleich basierend auf spezifischen Anforderungen.

Das obige ist der detaillierte Inhalt vonWie ordne ich URLs mit regulären Ausdrücken in Go zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn