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