很明显随着我们后期的开发main函数的路由会变得很多,这时候便有路由分组的办法了
根据我们路由的有不同功能,不难想到我们会把同一组的分在一起,比如属于admin的。属于default的,user的
image

如图所示我们在routers下建立三个路由,我们用到的路由分组的方法是

defaultRouters:=route.Group("/")
{
defaultRouter.GET("/",func(context *gin.Context){
context.HTML(200,"default/index.html",nil)
})
defaultRouter.GET("/news",func(context *gin.Context){
context.HTML(200,"default/news.html",nil)
})
}

注意Group方法的大括号得换行占一行,这样我们就建立了/,/news页面

然后具体到每个路由

routers/adminRouters.go

package routers

import(
"github.com/gin-gonic/gin"
)

func AdminRoutersInit(route *gin.Engine){
adminRouters:=route.Group("/admin")
{
adminRouters.GET("/", func(context *gin.Context) {
context.String(200, "我是admin")
})
adminRouters.GET("/user", func(context *gin.Context) {
context.String(200, "我是admin/user")
})
adminRouters.GET("/user/add", func(context *gin.Context) {
context.String(200, "我是admin/user/add")
})
adminRouters.GET("/user/edit", func(context *gin.Context) {
context.String(200, "我是admin/user/edit")
})

}

}

为了让我们的方法被访问,得将方法名首字母大写

routers/defaultRouters.go

package router

import(
"github.com/gin-gonic/gin"
)

func DefaultRoutersInit(route *gin.Engine) {
defaultRouters := route.Group("/")
{
defaultRouters.GET("/", func(context *gin.Context) {
context.HTML(200, "default/index.html", nil)
})
defaultRouters.GET("/news", func(context *gin.Context) {
context.String(200, "我是news")
})
}
}

routers/apiRouters.go

package routers

import (
"github.com/gin-gonic/gin"
)

func ApiRoutersInit(route *gin.Engine) {
apiRouters := route.Group("/api")
{
apiRouters.GET("/", func(context *gin.Context) {
context.String(200, "我是api")
})
apiRouters.GET("/userlist", func(context *gin.Context) {
context.String(200, "我是api userlist")
})
apiRouters.GET("/plist", func(context *gin.Context) {
context.String(200, "我是api plist")
})
apiRouters.GET("/cart", func(context *gin.Context) {
context.String(200, "我是api cart")
})
}
}

在main.go中使用

一定要引入,比如我的项目是gin-all/gin04/router

import(
"gin-all/gin04/routers"
)

images
在main.go中

routers.DefaultRoutersInit(route)
routers.ApitRoutersInit(route)
routers.AdminRoutersInit(route)

最后fresh就行了