在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中文網其他相關文章!