只需创建一个超级组,然后在其下创建您的组即可。代码示例来说明我的意思:
router := gin.New()
superGroup := router.Group("/api")
{
userGroup := superGroup.Group("/user")
{
// user group handlers
}
todoGroup := superGroup.Group("/todo")
{
// todo group handlers
}
}
使用此代码,您无法像现在一样创建组,因为您的两个函数todorouter.TodoRoutes
and userrouter.UserRoutes
实例化自己的gin.Engine
。所以你必须移动顶级引擎/api
组到一个共同的地方。
如果需要,您可以将 api 组对象作为函数参数传递。例子:
//TodoRoutes for creating Todo
func TodoRoutes(apiGroup *gin.RouterGroup) {
v2 := apiGroup.Group("/todo")
{
v2.GET("/hello", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
}
}
然而,为了保持代码组织良好,我的建议是在同一位置实例化所有路由器,然后将处理程序放在单独的包中。
// package todoroutes
func HandleHello(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
}
// package router
router := gin.New()
superGroup := router.Group("/api")
{
userGroup := superGroup.Group("/user")
{
userGroup.GET("/hello", todoroutes.HandleHello)
}
}