// Package router ... // // Description : router ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2025-02-15 21:20 package router import ( "github.com/gin-gonic/gin" knife4goFiles "github.com/go-webtools/knife4go" knife4goGin "github.com/go-webtools/knife4go/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" ) // NewSwaggerUI ... // // Author : go_developer@163.com<白茶清欢> // // Date : 21:21 2025/2/15 func NewSwaggerUI(docInstance *Doc, uiTheme string) *SwaggerUI { return &SwaggerUI{ docInstance: docInstance, uiTheme: uiTheme, } } type SwaggerUI struct { docInstance *Doc // 文档实例 uiTheme string // 文档主题, swaggerUI / knife4go, 默认 knife4go } // Handler 访问文档的接口处理 // // Author : go_developer@163.com<白茶清欢> // // Date : 21:34 2025/2/15 func (su *SwaggerUI) Handler() func(ctx *gin.Context) { switch su.uiTheme { case SwaggerUIThemeKnife4go: return su.HandleKnife4goUI() default: return su.HandleSwaggerUI() } } // HandleKnife4goUI ... // // Author : go_developer@163.com<白茶清欢> // // Date : 21:38 2025/2/15 func (su *SwaggerUI) HandleKnife4goUI() func(ctx *gin.Context) { resetOption := func(cfg *knife4goGin.Config) { if nil == cfg { return } cfg.Title = "服务接口文档" } return knife4goGin.WrapHandler(knife4goFiles.Handler, resetOption) } // HandleSwaggerUI ... // // Author : go_developer@163.com<白茶清欢> // // Date : 21:41 2025/2/15 func (su *SwaggerUI) HandleSwaggerUI() func(ctx *gin.Context) { return ginSwagger.WrapHandler(swaggerFiles.Handler) }