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

如何在 Go 中使用正则表达式路由 URL?

Barbara Streisand
Barbara Streisand原创
2024-11-25 07:14:10124浏览

How Can I Use Regular Expressions to Route URLs in Go?

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

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