升级路由注册 #7
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -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<白茶清欢>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user