gin/router/swagger_ui.go

72 lines
1.6 KiB
Go
Raw Normal View History

2025-02-15 21:53:21 +08:00
// 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)
}