在 HTTP 处理程序的模式中指定通配符
使用 http.Handler 或 http.HandleFunc 创建处理程序时,您可能需要在以下位置指定通配符匹配一系列 URL 的模式。不幸的是,这些函数的模式不是正则表达式,默认情况下不支持通配符。
相反,您可以创建自己的自定义处理程序,该处理程序支持使用正则表达式或任何其他所需模式进行模式匹配。以下是使用正则表达式的示例:
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) }
通过实现自己的自定义处理程序,您可以灵活地定义自己的模式匹配逻辑并根据需要处理不同类型的 URL。
以上是如何匹配 HTTP 处理程序的 URL 模式中的通配符?的详细内容。更多信息请关注PHP中文网其他相关文章!