gin的正则路由

作者: adm 分类: go 发布时间: 2022-12-01
// gin 正则路由:
type route struct {
	reg *regexp.Regexp // 正则表达式
	method string // 请求方式
	//handler func(http.ResponseWriter, *http.Request) // 处理器
	handler func(c *gin.Context) // 处理器
}
var routes = []route{
	// git clone 第一步:拉取info/refs文件:通过 update-server-info 命令生成的
	{regexp.MustCompile(`(.*?)/info/refs$`), "GET", getInfoRefs},
	// git clone 第二步:获取HEAD
	//{regexp.MustCompile(`(.*?)/head$`), "GET", getTextFile},
	//{regexp.MustCompile(`(.*?)git-upload-pack$`), "POST", gitUpLoadPack},
}
func main() {
	router := gin.Default()
	router.Any("/*action", func(c *gin.Context) {
		// 使用正则路由表,url不需要参数
		url := strings.ToLower(c.Request.URL.Path)
		for _, route := range routes {
			if route.reg.MatchString(url) {
				if c.Request.Method == route.method {
					route.handler(c)
				}
			}
		}
	})
	router.Run(":8800")
}

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!