在Go 中使用正規表示式映射URL
在Go 中,使用正規表示式匹配URL 可以實現更靈活、更具表現力的URL 路由。但是,依賴 http.HandleFunc() 函數來實現此目的並不理想。
http.HandleFunc() 函數主要用於匹配固定路徑或有根子樹。它不支援使用正規表示式。為此,您需要將處理程序註冊到根子樹(例如 /),然後在處理程序中實作自訂正規表示式符合和路由。
考慮以下範例:
import ( "fmt" "net/http" "regexp" ) var rNum = regexp.MustCompile(`\d`) // Matches URLs with digits var rAbc = regexp.MustCompile(`abc`) // Matches URLs containing "abc" func main() { http.HandleFunc("/", route) http.ListenAndServe(":8080", nil) } func route(w http.ResponseWriter, r *http.Request) { switch { case rNum.MatchString(r.URL.Path): digits(w, r) case rAbc.MatchString(r.URL.Path): abc(w, r) default: w.Write([]byte("Unknown Pattern")) } } func digits(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Has digits")) } func abc(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Has abc")) }
此程式碼:
或者,您可以利用 Gorilla MUX 等外部函式庫來實現更進階且通用的 URL 路由能力。
以上是Go中如何使用正規表示式進行靈活的URL路由?的詳細內容。更多資訊請關注PHP中文網其他相關文章!