Gin 中自定义控制器
# 1、控制器分组
当我们的项目比较大的时候有必要对我们的控制器进行分组 新建 controller/admin/NewsController.go
package admin
import (
"github.com/gin-gonic/gin"
"net/http"
)
type NewsController struct {
}
func (c NewsController) Index(ctx *gin.Context) {
ctx.String(http.StatusOK, "新闻首页")
}
新建 controller/admin/UserController.go
package admin
import (
"github.com/gin-gonic/gin"
"net/http"
)
type UserController struct {
}
func (u UserController) Index(ctx *gin.Context) {
ctx.String(http.StatusOK, "这是用户首页")
}
func (u UserController) Add(ctx *gin.Context) {
ctx.String(http.StatusOK, "增加用户")
}
......
配置对应的路由 -- adminRoutes.go
其他路由的配置方法类似
package routes
import (
"github.com/gin-gonic/gin"
"test4/controller/admin"
)
func AdminRoutesInit(router *gin.Engine) {
adminRouter := router.Group("/admin")
{
adminRouter.GET("/user", admin.UserController{}.Index)
adminRouter.GET("/user/add", admin.UserController{}.Add)
adminRouter.GET("/news", admin.NewsController{}.Index)
}
}
效果:
# 2、控制器的继承
1、新建 controller/admin/BaseController.go
package admin
import (
"github.com/gin-gonic/gin"
"net/http"
)
type BaseController struct {
}
func (c BaseController) Success(ctx *gin.Context) {
ctx.String(http.StatusOK, "成功")
}
func (c BaseController) Error(ctx *gin.Context) {
ctx.String(http.StatusOK, "失败")
}
2、NewsController 继承 BaseController,继承后就可以调用控制器里面的公共方法了
package admin
import (
"github.com/gin-gonic/gin"
)
type NewsController struct {
BaseController
}
func (c NewsController) Index(ctx *gin.Context) {
c.Success(ctx)
}
上次更新: 2025/04/03, 16:12:12