feat: opt swagger init memory place

This commit is contained in:
engigu
2026-03-08 22:58:47 +08:00
parent a4145876d5
commit a6483f9dc8
+5 -8
View File
@@ -12,10 +12,9 @@ import (
"github.com/engigu/baihu-panel/internal/models/vo"
"github.com/engigu/baihu-panel/internal/services"
"github.com/engigu/baihu-panel/internal/static"
"github.com/engigu/baihu-panel/openapi_docs"
"github.com/gin-gonic/gin"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
)
type Controllers struct {
@@ -132,9 +131,6 @@ func initStaticRoutes(root *gin.RouterGroup) {
}
func initOpenAPIRoutes(root *gin.RouterGroup, urlPrefix string) {
// 预先创建 Swagger Handler,避免重复解析 docs.go 导致内存尖峰
swagHandler := ginSwagger.WrapHandler(swaggerFiles.Handler, ginSwagger.URL(urlPrefix+"/openapi/doc.json"))
// OpenAPI documentation using Scalar UI (带 Basic Auth 认证)
root.GET("/openapi/*any", func(c *gin.Context) {
settingsSvc := services.NewSettingsService()
@@ -198,10 +194,11 @@ func initOpenAPIRoutes(root *gin.RouterGroup, urlPrefix string) {
return
}
// 3. 提供给 Scalar/Swagger 使用的 doc.json 内容
// 3. 提供给 Scalar/Swagger 使用 host 环境变量后的 doc.json 内容
if path == "doc.json" {
// 使用预先创建并缓存的 handler
swagHandler(c)
doc := openapi_docs.SwaggerInfo.ReadDoc()
c.Header("Content-Type", "application/json; charset=utf-8")
c.String(http.StatusOK, doc)
return
}