Wie kann ich Platzhalter in URL-Mustern für HTTP-Handler abgleichen?

Barbara Streisand
Freigeben: 2024-11-12 19:38:02
Original
262 Leute haben es durchsucht

How Can I Match Wildcards in URL Patterns for HTTP Handlers?

Angeben von Platzhaltern in Mustern für HTTP-Handler

Beim Erstellen von Handlern mit http.Handler oder http.HandleFunc möchten Sie möglicherweise Platzhalter in angeben das Muster so, dass es mit einem Bereich von URLs übereinstimmt. Leider sind die Muster für diese Funktionen keine regulären Ausdrücke und unterstützen standardmäßig keine Platzhalter.

Stattdessen können Sie Ihren eigenen benutzerdefinierten Handler erstellen, der den Mustervergleich mithilfe regulärer Ausdrücke oder eines anderen gewünschten Musters unterstützt. Hier ist ein Beispiel für die Verwendung regulärer Ausdrücke:

import (
    "net/http"
    "regexp"
)

type route struct {
    pattern *regexp.Regexp
    handler http.Handler
}

type RegexpHandler struct {
    routes []*route
}

func (h *RegexpHandler) Handler(pattern *regexp.Regexp, handler http.Handler) {
    h.routes = append(h.routes, &route{pattern, handler})
}

func (h *RegexpHandler) HandleFunc(pattern *regexp.Regexp, handler func(http.ResponseWriter, *http.Request)) {
    h.routes = append(h.routes, &route{pattern, http.HandlerFunc(handler)})
}

func (h *RegexpHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    for _, route := range h.routes {
        if route.pattern.MatchString(r.URL.Path) {
            route.handler.ServeHTTP(w, r)
            return
        }
    }
    // No pattern matched; send 404 response
    http.NotFound(w, r)
}
Nach dem Login kopieren

Durch die Implementierung Ihres eigenen benutzerdefinierten Handlers erhalten Sie die Flexibilität, Ihre eigene Mustervergleichslogik zu definieren und je nach Bedarf verschiedene Arten von URLs zu verarbeiten.

Das obige ist der detaillierte Inhalt vonWie kann ich Platzhalter in URL-Mustern für HTTP-Handler abgleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage