69 lines
1.9 KiB
Go
69 lines
1.9 KiB
Go
package routers
|
||
|
||
import (
|
||
"os"
|
||
|
||
"server/middleware"
|
||
"server/routers/api"
|
||
"server/routers/backend"
|
||
"server/routers/index"
|
||
"server/routers/platform"
|
||
|
||
beego "github.com/beego/beego/v2/server/web"
|
||
"github.com/beego/beego/v2/server/web/context"
|
||
)
|
||
|
||
// 初始化路由(精简版)
|
||
func init() {
|
||
// 全局 CORS 处理 + 预检请求
|
||
beego.InsertFilter("*", beego.BeforeRouter, func(ctx *context.Context) {
|
||
ctx.Output.Header("Access-Control-Allow-Origin", "*")
|
||
ctx.Output.Header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, PATCH, OPTIONS")
|
||
ctx.Output.Header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
|
||
ctx.Output.Header("Access-Control-Allow-Credentials", "true")
|
||
ctx.Output.Header("Access-Control-Max-Age", "86400")
|
||
|
||
if ctx.Input.Method() == "OPTIONS" {
|
||
ctx.Output.Status = 200
|
||
ctx.Output.Body([]byte(""))
|
||
return
|
||
}
|
||
})
|
||
|
||
// 全局操作日志:请求开始采集
|
||
beego.InsertFilter("*", beego.BeforeRouter, middleware.BeginOperationLog)
|
||
// 全局操作日志:请求结束统一落库
|
||
beego.InsertFilter("*", beego.FinishRouter, middleware.FinishOperationLog)
|
||
|
||
// 根据运行模式选择要注册的路由组
|
||
// 优先读取环境变量 APP_MODE,其次读取配置 app_mode,默认 all
|
||
mode := os.Getenv("APP_MODE")
|
||
if mode == "" {
|
||
mode, _ = beego.AppConfig.String("app_mode")
|
||
}
|
||
if mode == "" {
|
||
mode = "all"
|
||
}
|
||
|
||
switch mode {
|
||
case "platform":
|
||
platform.Register()
|
||
// 在 platform 模式下,仍保留 backend 登录相关路由,避免后台登录 404
|
||
backend.RegisterAuthRoutes()
|
||
case "backend":
|
||
backend.Register()
|
||
case "index":
|
||
index.Register()
|
||
case "api":
|
||
api.Register()
|
||
case "all":
|
||
platform.Register()
|
||
backend.Register()
|
||
index.Register()
|
||
api.Register()
|
||
default:
|
||
// 未知模式时,退回到只启用平台端,避免启动失败
|
||
platform.Register()
|
||
}
|
||
}
|