整理router

This commit is contained in:
2026-08-19 17:49:58 +08:00
parent 4a9ac54963
commit abee7e86aa
+57 -70
View File
@@ -8,7 +8,6 @@ import (
"github.com/gin-gonic/gin"
)
// 常量定义
const (
staticPath = "/static"
adminStaticPath = "/admin/static"
@@ -24,143 +23,131 @@ func SetupRoutes(r *gin.Engine) {
setupAPIRoutes(r)
}
// setupStaticRoutes 配置静态资源路由
// setupStaticRoutes 静态资源
func setupStaticRoutes(r *gin.Engine) {
r.Static(staticPath, "./static")
r.Static(adminStaticPath, "./static/admin")
}
// setupAdminPageRoutes 配置后台管理页面路由(服务端渲染)
// setupAdminPageRoutes 后台管理页面(服务端渲染)
func setupAdminPageRoutes(r *gin.Engine) {
r.GET(adminPath+"/login", backend.AdminLoginView)
r.GET(adminPath, middleware.OptionalAuth(), backend.AdminView)
}
// setupFrontendRoutes 配置前台页面路由
// setupFrontendRoutes 前台页面(服务端渲染)
func setupFrontendRoutes(r *gin.Engine) {
r.GET("/", middleware.OptionalAuth(), frontend.IndexView)
r.GET("/post/:slug", middleware.OptionalAuth(), frontend.PostView)
r.GET("/page/:slug", middleware.OptionalAuth(), frontend.PageView)
r.GET("/search", middleware.OptionalAuth(), frontend.SearchView)
r.POST("/comment", frontend.SubmitComment) // 前台提交评论(公开)
r.GET("/logout", backend.WebLogout) // 前台退出登录
r.POST("/comment", frontend.SubmitComment)
r.GET("/logout", backend.WebLogout)
}
// setupAPIRoutes 配置所有 /api 下的接口路由
// setupAPIRoutes API 路由分组
func setupAPIRoutes(r *gin.Engine) {
api := r.Group(apiPrefix)
// 公开接口:无需认证或可选认证
setupPublicAPIRoutes(api)
// 需要认证的接口(JWT)
setupAuthenticatedAPIRoutes(api)
// 管理员专属接口(JWT + 管理员角色)
setupAdminAPIRoutes(api)
setupPublicAPIRoutes(api) // 公开接口
setupAuthenticatedAPIRoutes(api) // 需要 JWT 的接口
setupAdminAPIRoutes(api) // 管理员专属接口
}
// setupPublicAPIRoutes 配置公开 API(无需认证或可选认证)
// setupPublicAPIRoutes 公开 API(无需登录)
func setupPublicAPIRoutes(api *gin.RouterGroup) {
// 文章
api.GET("/posts", middleware.OptionalAuth(), backend.GetPosts)
api.GET("/posts/:id", middleware.OptionalAuth(), backend.GetPost)
// 分类
api.GET("/categories", backend.GetCategories)
api.GET("/categories/:id", backend.GetCategory)
// 标签
api.GET("/tags", backend.GetTags)
api.GET("/tags/:id", backend.GetTag)
// 页面
api.GET("/pages", backend.GetPages)
api.GET("/pages/:id", backend.GetPage)
// 评论列表(公开,仅显示已批准评论)
api.GET("/comments", backend.GetComments)
// 创建评论(可选认证,若登录则关联用户)
api.POST("/comments", middleware.OptionalAuth(), backend.CreateComment)
// 登录(公开)
// 登录
api.POST("/auth/login", backend.Login)
// 仪表盘统计(可选认证,未登录返回公开统计,登录返回更多数据)
// 创建评论(可选认证,登录后关联用户)
api.POST("/comments", middleware.OptionalAuth(), backend.CreateComment)
// 仪表盘公开统计数据(可选认证,登录后返回更多数据)
api.GET("/dashboard/stats", middleware.OptionalAuth(), backend.GetDashboardStats)
// 主题公开接口
// 主题公开信息
api.GET("/themes", backend.GetThemes)
api.GET("/theme", backend.GetCurrentTheme)
}
// setupAuthenticatedAPIRoutes 配置需要登录的 API(JWT 认证)
// setupAuthenticatedAPIRoutes 需要 JWT 的接口(所有登录用户)
func setupAuthenticatedAPIRoutes(api *gin.RouterGroup) {
auth := api.Group("/")
auth.Use(middleware.JWTAuth())
// 当前用户信息与修改
// 当前用户信息
auth.GET("/auth/me", backend.GetCurrentUser)
auth.PUT("/auth/me", backend.UpdateUser)
auth.PUT("/auth/password", backend.ChangePassword)
// 登出
auth.POST("/auth/logout", backend.Logout)
// 文章管理
// 文章管理(读取 + 写入)
auth.GET("/posts", backend.GetPosts)
auth.GET("/posts/:id", backend.GetPost)
auth.POST("/posts", backend.CreatePost)
auth.PUT("/posts/:id", backend.UpdatePost)
auth.DELETE("/posts/:id", backend.DeletePost)
// Markdown 预览
auth.POST("/markdown/preview", backend.PreviewMarkdown)
// 分类读取(写入在管理员组)
auth.GET("/categories", backend.GetCategories)
auth.GET("/categories/:id", backend.GetCategory)
// 文件上传与管理
auth.POST("/upload", backend.UploadImage)
auth.GET("/uploads", backend.ListUploads)
auth.DELETE("/uploads/:id", backend.DeleteUpload)
// 标签读取(写入在管理员组)
auth.GET("/tags", backend.GetTags)
auth.GET("/tags/:id", backend.GetTag)
// 我的评论管理(管理自己文章下的评论)
// 页面读取(写入在管理员组)
auth.GET("/pages", backend.GetPages)
auth.GET("/pages/:id", backend.GetPage)
// 评论管理(查看所有评论,需登录)
auth.GET("/comments", backend.GetComments)
// 我的评论管理(用户自己文章下的评论)
auth.GET("/my/comments", backend.GetComments)
auth.PUT("/my/comments/:id/approve", backend.ApproveComment)
auth.PUT("/my/comments/:id/spam", backend.MarkSpamComment)
auth.DELETE("/my/comments/:id", backend.DeleteComment)
// 主题管理(认证用户可切换主题、创建主题、编辑主题文件)
themeAuth := auth.Group("/")
{
themeAuth.POST("/theme", backend.SwitchTheme)
themeAuth.POST("/themes/create", backend.CreateTheme)
themeAuth.GET("/themes/:theme/files", backend.GetThemeFiles)
themeAuth.GET("/themes/:theme/files/:file", backend.GetThemeFile)
themeAuth.PUT("/themes/:theme/files/:file", backend.SaveThemeFile)
}
// Markdown 预览
auth.POST("/markdown/preview", backend.PreviewMarkdown)
// 文件上传
auth.POST("/upload", backend.UploadImage)
auth.GET("/uploads", backend.ListUploads)
auth.DELETE("/uploads/:id", backend.DeleteUpload)
// 主题管理(登录用户可切换主题、创建主题、编辑文件)
auth.POST("/theme", backend.SwitchTheme)
auth.POST("/themes/create", backend.CreateTheme)
auth.GET("/themes/:theme/files", backend.GetThemeFiles)
auth.GET("/themes/:theme/files/:file", backend.GetThemeFile)
auth.PUT("/themes/:theme/files/:file", backend.SaveThemeFile)
}
// setupAdminAPIRoutes 配置管理员专属 API(需要登录 + 管理员角色)
// setupAdminAPIRoutes 管理员专属接口(JWT + AdminRequired)
func setupAdminAPIRoutes(api *gin.RouterGroup) {
admin := api.Group("/admin")
admin.Use(middleware.JWTAuth(), middleware.AdminRequired())
// 分类管理
// 分类管理(写入)
admin.POST("/categories", backend.CreateCategory)
admin.PUT("/categories/:id", backend.UpdateCategory)
admin.DELETE("/categories/:id", backend.DeleteCategory)
// 标签管理
// 标签管理(写入)
admin.POST("/tags", backend.CreateTag)
admin.PUT("/tags/:id", backend.UpdateTag)
admin.DELETE("/tags/:id", backend.DeleteTag)
// 页面管理
// 页面管理(写入)
admin.POST("/pages", backend.CreatePage)
admin.PUT("/pages/:id", backend.UpdatePage)
admin.DELETE("/pages/:id", backend.DeletePage)
// 评论管理(所有评论)
admin.GET("/comments", backend.GetComments)
// 评论管理(所有评论,写入 + 删除)
admin.GET("/comments", backend.GetComments) // 管理员可查看所有评论
admin.PUT("/comments/:id/approve", backend.ApproveComment)
admin.PUT("/comments/:id/spam", backend.MarkSpamComment)
admin.DELETE("/comments/:id", backend.DeleteComment)
@@ -176,8 +163,8 @@ func setupAdminAPIRoutes(api *gin.RouterGroup) {
admin.GET("/settings", backend.GetSettings)
admin.PUT("/settings", backend.UpdateSettings)
// 文件管理(管理员可看全部)
admin.POST("/upload", backend.UploadImage)
// 文件管理
admin.POST("/upload", backend.UploadImage) // 管理员上传(也可在认证组)
admin.GET("/uploads", backend.ListUploads)
admin.DELETE("/uploads/:id", backend.DeleteUpload)
}