// 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")
}