Files
mengyaping/mengyaping-backend/router/router.go
2026-05-16 19:03:32 +08:00

67 lines
1.9 KiB
Go

package router
import (
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
"mengyaping-backend/handlers"
"mengyaping-backend/middleware"
)
// SetupRouter 设置路由
func SetupRouter() *gin.Engine {
r := gin.Default()
// CORS配置
r.Use(cors.New(cors.Config{
AllowOrigins: []string{"*"},
AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
AllowHeaders: []string{"Origin", "Content-Type", "Accept", "Authorization", "X-Admin-Token"},
ExposeHeaders: []string{"Content-Length"},
AllowCredentials: true,
}))
// 创建处理器
websiteHandler := handlers.NewWebsiteHandler()
settingsHandler := handlers.NewSettingsHandler()
// API路由组
api := r.Group("/api")
{
// 健康检查
api.GET("/health", func(c *gin.Context) {
c.JSON(200, gin.H{
"status": "ok",
"message": "服务运行正常",
})
})
// 公开:监控调度信息(仅展示)
api.GET("/monitor/settings", settingsHandler.GetPublicMonitorSettings)
// 网站 / 分组 — 读操作公开
api.GET("/websites", websiteHandler.GetWebsites)
api.GET("/websites/:id", websiteHandler.GetWebsite)
api.GET("/groups", websiteHandler.GetGroups)
api.GET("/groups/:id", websiteHandler.GetGroup)
// 管理:写操作需 ADMIN_TOKEN
admin := api.Group("")
admin.Use(middleware.AdminAuth())
{
admin.POST("/websites", websiteHandler.CreateWebsite)
admin.PUT("/websites/:id", websiteHandler.UpdateWebsite)
admin.DELETE("/websites/:id", websiteHandler.DeleteWebsite)
admin.POST("/websites/:id/check", websiteHandler.CheckWebsiteNow)
admin.POST("/groups", websiteHandler.AddGroup)
admin.PUT("/groups/:id", websiteHandler.UpdateGroup)
admin.DELETE("/groups/:id", websiteHandler.DeleteGroup)
admin.GET("/admin/config", settingsHandler.GetAdminConfig)
admin.PUT("/admin/config", settingsHandler.PutAdminMonitorConfig)
}
}
return r
}