在gin项目开发中,为了更好的实现团队合作,我们通常都是将路由文件分离,然后在主函数里面调用,这样就实现了模块化的开发
为了使项目结构更加有条理,我们通常要进行路由分组,在项目目录建立一个routers文件夹,里面新建一个admin.go的文件,下面两个路由的访问分别为/admin/index和/admin/login
package routers import ( "net/http" "github.com/gin-gonic/gin" ) func IndexInit(r *gin.Engine) { adminR := r.Group("/admin")//路由分组。 adminR.GET("/index", func(ctx *gin.Context) { ctx.String(http.StatusOK, "这是后台管理页面") }) adminR.GET("/login", func(ctx *gin.Context) { ctx.String(http.StatusOK, "这是后台登录页面") }) }
在main函数里面实现
package main import ( "hello/gin_team/routers" "github.com/gin-gonic/gin" )//这里自动引入routers的包 func main() { r := gin.Default() routers.IndexInit(r)//调用方法 r.Run() }
在根目录新建一个controller文件夹,在controller里面实现具体的方法,然后在routers文件夹下调用 controller目录结构
controller代码
package admin import ( "net/http" "github.com/gin-gonic/gin" ) type UserController struct { } func (UserController) AdminIndex(ctx *gin.Context) { ctx.String(http.StatusOK, "这是后台管理页面") } func (UserController) AdminLogin(ctx *gin.Context) { ctx.String(http.StatusOK, "这是后台登录页面") }
router调用controller
package routers import ( "hello/gin_controller/controller/admin" "github.com/gin-gonic/gin" ) func IndexInit(r *gin.Engine) { adminR := r.Group("/admin") adminR.GET("/index", admin.UserController{}.AdminIndex) adminR.GET("/login", admin.UserController{}.AdminLogin) }