Ich benutze das mux Paket, das scheint ziemlich gut zu funktionieren, außer dass es scheint nicht komplexe Routen zu unterstützen oder zumindest verstehe ich es nicht, wie es tut. Ich habe mehrere Routen, wie folgend:golang mux, routing wildcard & benutzerdefinierte func match
router := mux.NewRouter()
router.HandleFunc("/{productid}/{code}", product)
router.HandleFunc("/{user}", userHome)
router.HandleFunc("/search/price", searchPage)
So habe ich zwei Fragen:
Wie kann ich eine Wildcard Route so/Suche/Preis/* so, dass eine Anforderung solche/Suche definieren/Preis/29923/Wut/200/Farbe = rot kann es passen?
Ist es möglich, benutzerdefinierte Bedingungen zu einer bestehenden Route hinzuzufügen? z.B. Wenn die Route
/{productid}/{code}
ist und Funktion xtrue
zurückgibt, verwenden Sie diesehandlerTrue
. Wenn siefalse
zurückgibt, verwenden SiehandlerFalse
.
Ich habe versucht, so etwas wie .MatcherFunc(myfunction(ip)bool)
auf die Route hinzuzufügen, aber es beschwert sich, dass der Router keine solche Methode hat.
Momentan handle ich die 'benutzerdefinierten' Bedingungen innerhalb des Handlers.
undefined: RouteMatch, kann meine Funktion nicht verwenden (, * RouteMatch) (Typ bool) als Typ mux.MatcherFunc in Funktion Argument –
themihai
Ich habe mein Beispiel behoben. Ich empfehle auch sehr, die Gorilla Mux Dokumente zu lesen, die ein ähnliches Beispiel haben, wie man einen MatcherFunc ungefähr auf halber Seite schreibt: http://www.gorillatoolkit.org/pkg/mux – elithrar
Ich habe die Dokumente vor dem Posten gelesen die Frage. Ich denke, Ihre Antwort wird im Grunde aus den Dokumenten kopiert, mit Ausnahme der IP-Funktion. – themihai