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()
+ }
+}