Maison > développement back-end > Golang > le corps du texte

Comment puis-je faire correspondre les caractères génériques dans les modèles d'URL pour les gestionnaires HTTP ?

Barbara Streisand
Libérer: 2024-11-12 19:38:02
original
268 Les gens l'ont consulté

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

Spécification des caractères génériques dans les modèles pour les gestionnaires HTTP

Lors de la création de gestionnaires à l'aide de http.Handler ou http.HandleFunc, vous souhaiterez peut-être spécifier des caractères génériques dans le modèle pour correspondre à une plage d’URL. Malheureusement, les modèles de ces fonctions ne sont pas des expressions régulières et ne prennent pas en charge les caractères génériques par défaut.

Au lieu de cela, vous pouvez créer votre propre gestionnaire personnalisé qui prend en charge la correspondance de modèles à l'aide d'expressions régulières ou de tout autre modèle souhaité. Voici un exemple utilisant des expressions régulières :

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)
}
Copier après la connexion

En implémentant votre propre gestionnaire personnalisé, vous bénéficiez de la flexibilité nécessaire pour définir votre propre logique de correspondance de modèles et gérer différents types d'URL selon vos besoins.

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!

source:php.cn
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