45 lines
1.0 KiB
Go
45 lines
1.0 KiB
Go
|
package router
|
||
|
|
||
|
import (
|
||
|
"ego/internal/conf"
|
||
|
"ego/internal/middleware"
|
||
|
|
||
|
"github.com/gin-gonic/gin"
|
||
|
swaggerFiles "github.com/swaggo/files"
|
||
|
ginSwagger "github.com/swaggo/gin-swagger"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
apiRouterFns []func(r *gin.RouterGroup)
|
||
|
)
|
||
|
|
||
|
// NewRouter 路由配置
|
||
|
func NewRouter() *gin.Engine {
|
||
|
// gin 实例
|
||
|
engine := gin.Default()
|
||
|
// 跨域处理
|
||
|
engine.Use(middleware.Cors())
|
||
|
// zap 日志
|
||
|
engine.Use(middleware.GinZapLogger())
|
||
|
// 统一错误处理
|
||
|
engine.Use(middleware.UnifiedErrorResponse())
|
||
|
// 登录日志中间件
|
||
|
engine.Use(middleware.LoginLogMiddleware(conf.Db))
|
||
|
|
||
|
// swagger
|
||
|
if gin.Mode() != gin.ReleaseMode {
|
||
|
engine.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||
|
}
|
||
|
// register routers, middleware support
|
||
|
registerRouters(engine, "/api/v1", apiRouterFns)
|
||
|
return engine
|
||
|
}
|
||
|
|
||
|
// registerRouters 注册路由
|
||
|
func registerRouters(r *gin.Engine, groupPath string, routerFns []func(*gin.RouterGroup), handlers ...gin.HandlerFunc) {
|
||
|
rg := r.Group(groupPath, handlers...)
|
||
|
for _, fn := range routerFns {
|
||
|
fn(rg)
|
||
|
}
|
||
|
}
|