在 Go 中使用正则表达式进行 URL 模式匹配
问题:
我怎样才能利用正则表达式来确定 Go 中用于 URL 处理的适当函数程序?
答案:
提供的代码演示了如何使用带有固定路径或根子树的 http.HandleFunc。要使用正则表达式进行 URL 匹配,请将处理程序注册到根子树并在处理程序内执行正则表达式匹配。
这是一个示例:
func main() { http.HandleFunc("/", route) // Match everything http.ListenAndServe(":8080", nil) } var rNum = regexp.MustCompile(`\d`) // Has digit(s) var rAbc = regexp.MustCompile(`abc`) // Contains "abc" 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中文网其他相关文章!