50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
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()
|
|
}
|