Merge pull request '升级路由注册' (#7) from feature/upgrade_route_register into master

Reviewed-on: #7
This commit is contained in:
白茶清欢 2025-02-22 16:15:37 +08:00
commit 12d2735663
2 changed files with 84 additions and 11 deletions

View File

@ -9,6 +9,7 @@ package router
import ( import (
apiDocDefine "git.zhangdeman.cn/gateway/api-doc/define" apiDocDefine "git.zhangdeman.cn/gateway/api-doc/define"
"git.zhangdeman.cn/zhangdeman/gin/middleware"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"strings" "strings"
) )
@ -28,6 +29,9 @@ type serverOption struct {
serverInfo *apiDocDefine.Info // 服务器信息 serverInfo *apiDocDefine.Info // 服务器信息
serverList []*apiDocDefine.ServerItem // 服务器环境列表 serverList []*apiDocDefine.ServerItem // 服务器环境列表
enablePprof bool // 启用pprof enablePprof bool // 启用pprof
enableRequestInit bool // 初始化请求,生成trace_id 设置请求时间等
enableCors bool // 启动跨域支持
loggerCfg *middleware.AccessConfig // 日志配置
} }
// WithSwaggerUITheme 设置swaggerUI主题 // WithSwaggerUITheme 设置swaggerUI主题
@ -121,3 +125,39 @@ func WithPprofEnable() SetServerOptionFunc {
so.enablePprof = true so.enablePprof = true
} }
} }
// WithEnableRequestInit 全局配置初始化
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 14:56 2025/2/22
func WithEnableRequestInit() SetServerOptionFunc {
return func(so *serverOption) {
so.enableRequestInit = true
}
}
// WithEnableCors 启用全局跨域
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 14:56 2025/2/22
func WithEnableCors() SetServerOptionFunc {
return func(so *serverOption) {
so.enableCors = true
}
}
// WithLoggerCdg ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 15:25 2025/2/22
func WithLoggerCdg(loggerCfg *middleware.AccessConfig) SetServerOptionFunc {
return func(so *serverOption) {
if nil == loggerCfg || nil == loggerCfg.Logger {
return
}
so.loggerCfg = loggerCfg
}
}

View File

@ -12,6 +12,7 @@ import (
apiDoc "git.zhangdeman.cn/gateway/api-doc" apiDoc "git.zhangdeman.cn/gateway/api-doc"
"git.zhangdeman.cn/zhangdeman/consts" "git.zhangdeman.cn/zhangdeman/consts"
"git.zhangdeman.cn/zhangdeman/gin/middleware" "git.zhangdeman.cn/zhangdeman/gin/middleware"
"git.zhangdeman.cn/zhangdeman/gin/middleware/request_cors"
"github.com/gin-contrib/pprof" "github.com/gin-contrib/pprof"
"net/http" "net/http"
"strings" "strings"
@ -68,19 +69,30 @@ func NewServer(port int, optionList ...SetServerOptionFunc) *server {
panic("port should be greater than 80") panic("port should be greater than 80")
} }
option := newServerOption(port, optionList...) option := newServerOption(port, optionList...)
globalMiddlewareList := make([]gin.HandlerFunc, 0)
if option.enableRequestInit {
// 初始化请求中间件
globalMiddlewareList = append(globalMiddlewareList, middleware.InitRequest())
}
if nil != option.loggerCfg {
// 请求日志记录中间件
globalMiddlewareList = append(globalMiddlewareList, middleware.LogRequest(option.loggerCfg))
}
if option.enableCors {
// 跨域中间件
globalMiddlewareList = append(globalMiddlewareList, request_cors.New(request_cors.Config{
AllowAllOrigins: true,
}))
}
if len(option.globalMiddlewareList) > 0 {
// 自定义全局中间件追加
globalMiddlewareList = append(globalMiddlewareList, option.globalMiddlewareList...)
}
r := gin.Default() r := gin.Default()
r.Use( // 注册全局中间件
// 初始化请求 r.Use(globalMiddlewareList...)
middleware.InitRequest(), // 初始化请求
/*request_cors.New(request_cors.Config{
AllowAllOrigins: true,
}), */// middleware.Ac
)
if nil != option.globalMiddlewareList {
// 启用全局中间件
r.Use(option.globalMiddlewareList...)
}
// 启用pprof, 注册相关路由 // 启用pprof, 注册相关路由
if option.enablePprof { if option.enablePprof {
pprof.Register(r) pprof.Register(r)
@ -122,6 +134,27 @@ func (s *server) Router() *gin.Engine {
return s.router return s.router
} }
// Handler404 注册404的处理方法
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 16:01 2025/2/22
func (s *server) Handler404(f gin.HandlerFunc) {
s.router.NoRoute(f)
}
// SetCustomRouter 自定义路由处理
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 16:09 2025/2/22
func (s *server) SetCustomRouter(f func(r *gin.Engine)) {
if nil == f {
return
}
f(s.router)
}
// Group 注册接口路由 // Group 注册接口路由
// //
// Author : go_developer@163.com<白茶清欢> // Author : go_developer@163.com<白茶清欢>