package common import ( "fmt" "reflect" "regexp" "strings" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/net/ghttp" "github.com/gogf/gf/v2/os/gtime" ) var Httpserver = g.Server() func init() { err := gtime.SetTimeZone("Asia/Shanghai") if err != nil { panic("设置时区失败") } Httpserver.SetOpenApiPath("/api.json") // 全局 panic 恢复(最先注册,作为最外层包裹) Httpserver.BindMiddlewareDefault(ghttp.MiddlewareHandlerResponse) // CORS - allow all origins Httpserver.BindMiddlewareDefault(func(r *ghttp.Request) { r.Response.CORS(r.Response.DefaultCORSOptions()) r.Middleware.Next() }) // JWT 鉴权 Httpserver.BindMiddlewareDefault(Auth) } // RouteRegister 根据控制器结构体名称自动注册路由 func RouteRegister(controllers []interface{}) { re := regexp.MustCompile("[A-Z]") for _, t := range controllers { sName := reflect.ValueOf(t).Elem().Type().Name() convertedStr := re.ReplaceAllStringFunc(sName, func(s string) string { return fmt.Sprintf("-%s", strings.ToLower(s)) }) if len(convertedStr) > 0 && convertedStr[0] == '-' { convertedStr = convertedStr[1:] } Httpserver.Group("/"+convertedStr, func(group *ghttp.RouterGroup) { group.Bind(t) }) } go Httpserver.Run() }