gpt4 book ai didi

go - 如何在 Gin 中组合路线组?

转载 作者:行者123 更新时间:2023-12-01 20:08:37 24 4
gpt4 key购买 nike

我为 gin 创建了两个不同的组专门路由/user/todo在两个不同的包中,我想将它们合并到一个文件中。这是我的 userroutes.go文件。

package userrouter

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

//UserRoutes for user
func UserRoutes() *gin.RouterGroup {

r := gin.Default()

v1 := r.Group("/user")
{

v1.GET("/hello", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})

}
return v1

}
todoroutes.go作为
package todorouter

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

//TodoRoutes for creating Todo
func TodoRoutes() *gin.RouterGroup {

r := gin.Default()

v2 := r.Group("/todo")
{

v2.GET("/hello", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})

}
return v2

}
然后想将它们合并到 routes.go .
package router

import (
todo "TODO/api/Routes/Todo/TodoRoutes"
user "TODO/api/Routes/User/UserRoutes"
"fmt"

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


//Router for all routes
func Router() {
// r := gin.Default()
userRoutes := user.UserRoutes()
todoRoutes := todo.TodoRoutes()

}
如何将它们合并到一个文件中,以便可以使用前缀 /api 获取它们喜欢 localhost:8081/api/user/createlocalhost:8081/api/todo/create .另外我需要创建 r := gin.Default()在我创建的每条 route 还是可以使用一次完成?谢谢。

最佳答案

只需创建一个 super 组,然后在其下创建您的组。代码示例显示我的意思:

    router := gin.New()

superGroup := router.Group("/api")
{
userGroup := superGroup.Group("/user")
{
// user group handlers
}

todoGroup := superGroup.Group("/todo")
{
// todo group handlers
}
}

使用此代码,您无法像现在一样创建组,因为您的两个函数 todorouter.TodoRoutesuserrouter.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)
}
}

关于go - 如何在 Gin 中组合路线组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62608429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com