首页 >后端开发 >Golang >如何在 Go 中使用正则表达式匹配 URL?

如何在 Go 中使用正则表达式匹配 URL?

DDD
DDD原创
2024-12-10 16:09:14279浏览

How to Match URLs with Regular Expressions in Go?

在 Go 中将 URL 与正则表达式匹配

在 Go 中,http.HandleFunc() 旨在处理特定的 URL 模式。但是,它不适合使用正则表达式匹配模式。

替代解决方案:

相反,请考虑以下解决方案:

  1. HandleFunc() 与根子树: 将处理程序分配给根子树(例如“/”)并在处理函数本身内执行正则表达式匹配。
// Match everything
http.HandleFunc("/", route)

var rNum = regexp.MustCompile(`\d`)  // Has digit(s)

func route(w http.ResponseWriter, r *http.Request) {
    if rNum.MatchString(r.URL.Path) {
        digits(w, r)
    } else {
        w.Write([]byte("No digits found"))
    }
}
  1. 外部库:利用外部库,如 Gorilla MUX (github.com)。 com/gorilla/mux),它提供了对路由的更多控制并支持正则表达式

例如,使用 Gorilla MUX:

r := mux.NewRouter()
r.HandleFunc("/digits", digitsHandler).Methods("GET")
r.HandleFunc("/abc", abcHandler).Methods("POST")

http.Handle("/", r)

这些方法中的每一种都允许根据特定要求进行更详细的 URL 匹配。

以上是如何在 Go 中使用正则表达式匹配 URL?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn