diff --git a/redoc-free/index.html b/redoc-free/index.html new file mode 100644 index 0000000..b24dbd1 --- /dev/null +++ b/redoc-free/index.html @@ -0,0 +1,29 @@ + + + + Redoc + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/swagger_ui.go b/swagger_ui.go index 7c97a81..dc8c56b 100644 --- a/swagger_ui.go +++ b/swagger_ui.go @@ -23,6 +23,9 @@ import ( //go:embed ydoc-lucky-ui/* var ydocUIFiles embed.FS +//go:embed redoc-free/index.html +var redocFreeIndexContent string + // NewSwaggerUI ... // // Author : go_developer@163.com<白茶清欢> @@ -109,8 +112,8 @@ func (su *SwaggerUI) Handler() func(ctx *gin.Context) { case define.SwaggerUIThemeDefault: return su.HandleSwaggerUI() case define.SwaggerUIThemeRedocFree: - // redoc免费版, TODO : 待完成 - return su.HandleSwaggerUI() + // redoc免费版 + return su.HandleRedocFreeUI() default: return su.HandleSwaggerUI() } @@ -165,3 +168,25 @@ func (su *SwaggerUI) HandleKnife4goUI() func(ctx *gin.Context) { func (su *SwaggerUI) HandleSwaggerUI() func(ctx *gin.Context) { return ginSwagger.WrapHandler(swaggerFiles.Handler) } + +// HandleRedocFreeUI 处理redoc_free主题 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 16:40 2025/2/18 +func (su *SwaggerUI) HandleRedocFreeUI() func(ctx *gin.Context) { + return func(ctx *gin.Context) { + // TODO : 这部分数据支持外部传参替换 + replaceTable := map[string]string{ + "{{CSS_FAMILY}}": "https://fonts.googleapis.com/css?family=Montserrat:300,400,700|Roboto:300,400,700", + "{{DOC_PATH}}": "doc.json", + "{{REDOC_STANDALONE_JS}}": "https://cdn.redoc.ly/redoc/latest/bundles/redoc.standalone.js", + } + for k, v := range replaceTable { + redocFreeIndexContent = strings.ReplaceAll(redocFreeIndexContent, k, v) + } + ctx.Header("Content-Type", "text/html; charset=utf-8") + ctx.String(http.StatusOK, redocFreeIndexContent) + ctx.Abort() + } +}