整合redoc免费版swagger文档主题
This commit is contained in:
		
							
								
								
									
										29
									
								
								redoc-free/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								redoc-free/index.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,29 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html>
 | 
			
		||||
<head>
 | 
			
		||||
    <title>Redoc</title>
 | 
			
		||||
    <!-- needed for adaptive design -->
 | 
			
		||||
    <meta charset="utf-8"/>
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
			
		||||
    <!-- https://fonts.googleapis.com/css?family=Montserrat:300,400,700|Roboto:300,400,700 -->
 | 
			
		||||
    <!-- 预留占位符, 可以通过外部替换 -->
 | 
			
		||||
    <link href="{{CSS_FAMILY}}" rel="stylesheet">
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
    Redoc doesn't change outer page styles
 | 
			
		||||
    -->
 | 
			
		||||
    <style>
 | 
			
		||||
        body {
 | 
			
		||||
            margin: 0;
 | 
			
		||||
            padding: 0;
 | 
			
		||||
        }
 | 
			
		||||
    </style>
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
<!-- 预留占位符, 可以通过外部替换 -->
 | 
			
		||||
<!--doc.json, 相对于外部设置好的base_url-->
 | 
			
		||||
<redoc spec-url='{{DOC_PATH}}'></redoc>
 | 
			
		||||
<!--https://cdn.redoc.ly/redoc/latest/bundles/redoc.standalone.js-->
 | 
			
		||||
<script src="{{REDOC_STANDALONE_JS}}"> </script>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -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()
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user