From b9a7f97342ff7a6b48e2e4c495f1e5579179fd76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Sat, 22 Feb 2025 15:00:37 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E4=B8=AD=E9=97=B4=E4=BB=B6=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- router/option.go | 24 ++++++++++++++++++++++++ router/server.go | 28 +++++++++++++++++----------- 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/router/option.go b/router/option.go index 72c4b9a..fe30d99 100644 --- a/router/option.go +++ b/router/option.go @@ -28,6 +28,8 @@ type serverOption struct { serverInfo *apiDocDefine.Info // 服务器信息 serverList []*apiDocDefine.ServerItem // 服务器环境列表 enablePprof bool // 启用pprof + enableRequestInit bool // 初始化请求,生成trace_id 设置请求时间等 + enableCors bool // 启动跨域支持 } // WithSwaggerUITheme 设置swaggerUI主题 @@ -121,3 +123,25 @@ func WithPprofEnable() SetServerOptionFunc { 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 + } +} diff --git a/router/server.go b/router/server.go index 16c6261..382e378 100644 --- a/router/server.go +++ b/router/server.go @@ -12,6 +12,7 @@ import ( apiDoc "git.zhangdeman.cn/gateway/api-doc" "git.zhangdeman.cn/zhangdeman/consts" "git.zhangdeman.cn/zhangdeman/gin/middleware" + "git.zhangdeman.cn/zhangdeman/gin/middleware/request_cors" "github.com/gin-contrib/pprof" "net/http" "strings" @@ -68,19 +69,24 @@ func NewServer(port int, optionList ...SetServerOptionFunc) *server { panic("port should be greater than 80") } option := newServerOption(port, optionList...) + globalMiddlewareList := make([]gin.HandlerFunc, 0) + if option.enableRequestInit { + globalMiddlewareList = append(globalMiddlewareList, middleware.InitRequest()) + } + 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.Use( - // 初始化请求 - middleware.InitRequest(), // 初始化请求 - /*request_cors.New(request_cors.Config{ - AllowAllOrigins: true, - }), */// middleware.Ac - ) - if nil != option.globalMiddlewareList { - // 启用全局中间件 - r.Use(option.globalMiddlewareList...) - } + // 注册全局中间件 + r.Use(globalMiddlewareList...) + // 启用pprof, 注册相关路由 if option.enablePprof { pprof.Register(r) From 93cef0cf7fb10877bac4cd5c4280037b15dc0b2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Sat, 22 Feb 2025 15:45:30 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=94=AF=E6=8C=81=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95=E4=B8=AD=E9=97=B4=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- router/option.go | 16 ++++++++++++++++ router/server.go | 6 ++++++ 2 files changed, 22 insertions(+) diff --git a/router/option.go b/router/option.go index fe30d99..495871c 100644 --- a/router/option.go +++ b/router/option.go @@ -9,6 +9,7 @@ package router import ( apiDocDefine "git.zhangdeman.cn/gateway/api-doc/define" + "git.zhangdeman.cn/zhangdeman/gin/middleware" "github.com/gin-gonic/gin" "strings" ) @@ -30,6 +31,7 @@ type serverOption struct { enablePprof bool // 启用pprof enableRequestInit bool // 初始化请求,生成trace_id 设置请求时间等 enableCors bool // 启动跨域支持 + loggerCfg *middleware.AccessConfig // 日志配置 } // WithSwaggerUITheme 设置swaggerUI主题 @@ -145,3 +147,17 @@ func WithEnableCors() SetServerOptionFunc { 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 + } +} diff --git a/router/server.go b/router/server.go index 382e378..7c266a4 100644 --- a/router/server.go +++ b/router/server.go @@ -71,9 +71,15 @@ func NewServer(port int, optionList ...SetServerOptionFunc) *server { 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, })) From 1de07156376bf5755a6897b5f70a2c5becfeafae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Sat, 22 Feb 2025 16:05:56 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=B3=A8=E5=86=8C404Hand?= =?UTF-8?q?ler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- router/server.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/router/server.go b/router/server.go index 7c266a4..f317670 100644 --- a/router/server.go +++ b/router/server.go @@ -134,6 +134,15 @@ func (s *server) Router() *gin.Engine { 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) +} + // Group 注册接口路由 // // Author : go_developer@163.com<白茶清欢> From 01b62b6eeeec13d7986e91ed0ed920b5859f12b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Sat, 22 Feb 2025 16:14:55 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=9C=A8router=E5=AE=9E?= =?UTF-8?q?=E5=8A=9B=E4=B8=8A=E8=87=AA=E8=A1=8C=E6=B3=A8=E5=86=8C=E8=B7=AF?= =?UTF-8?q?=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- router/server.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/router/server.go b/router/server.go index f317670..16058a6 100644 --- a/router/server.go +++ b/router/server.go @@ -143,6 +143,18 @@ 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 注册接口路由 // // Author : go_developer@163.com<白茶清欢>