【问题标题】:Golang Gin-Gonic Split Routes into Multiple FilesGolang Gin-Gonic 将路由拆分成多个文件
【发布时间】:2017-08-15 11:41:46
【问题描述】:

我希望将我的 routes.go 拆分为多个文件,以便每个组都在自己的包中。有人可以给我举一个有人用 Gin 完成此操作的代码示例吗?

即

package auth
...
auth = route.Group("/auth"){
    auth.GET(...
    auth.POST(...
}
...

package users
...
user = route.Group("/user"){
    user.GET(...
    user.POST(...
}
...

package main
import (
     "auth"
     "users"
)
...
router = gin.Default()
router.Register(auth.auth, users.user)
router.Run()
...

【问题讨论】:

  • 我看过那个问题及其答案。但是,问题和答案不清楚,而且有些不正确,因为它们使用了本地导入路径。至于解决方案是什么,答案也不清楚。我觉得我的问题和答案更清楚了。
  • 这不是重点。如果您对现有问题有更好的答案,请将其发布为该问题的答案。如果现有问题不清楚,请编辑它。事实上,您的问题显然是重复的。
  • 在对之前类似的问题进行更深入的审查后,在审查了答案后,我发现我的问题和答案已经足够不同了,因此从中得到了足够的好处社区让它作为一个单独的问题存在。
  • 我喜欢你的问题和答案。真的比重复的问题更好更清晰,谢谢。
  • 我投票重新打开,因为就目前而言,这个问题的浏览量为 6k,答案为 25,而欺骗目标的浏览量为 2k,答案为 1。骗子应该倒过来。这里的答案质量也更好

标签: go package go-gin


【解决方案1】:

这样做的方法是在每个函数中创建一个以路由为参数的函数,然后将路由添加到参数中:

package auth
import "...gin"
func Routes(route *gin.Engine)
auth := route.Group("/auth"){
    auth.GET(...
    auth.POST(...
}
...

package users
import "...gin"
func Routes(route *gin.Engine)
user := route.Group("/user"){
    user.GET(...
    user.POST(...
}
...

package main
import (
     "github.com/username/package/sub/auth"
     "github.com/username/package/sub/users"
     "github.com/gin-gonic/gin"
)
...
router := gin.Default()
auth.Routes(router) //Added all auth routes
user.Routes(router) //Added all user routes
router.Run()
...

【讨论】:

    【解决方案2】:

    另一个例子,不同的视角……主文件中的主组,一个目录下不同文件中的子组groups

    package groups
    import "...gin"
    func Customer(g *gin.RouterGroup) {
      g.GET("/authorize", customer.Authorize)
      g.POST("/register", customer.Register)
    }
    ...
    
    package groups
    import "...gin"
    func Info(g *gin.RouterGroup) {
      g.GET("/car-color", controllers.CarColorsList)
      g.GET("/car-type", controllers.CarTypesList)
      g.GET("/car-manufacturer", controllers.CarManufacturersList)
      g.GET("/car-model", controllers.CarModelsList)
    }
    ...
    
    package main
    import (
         "github.com/gin-gonic/gin"
         "github.com/username/package/api/groups"
    )
    ...
    router := gin.Default()
    v1 := router.Group("/v1")
    {
     v1.Use(AuthMiddleware)
     groups.Info(v1.Group("/info"))
     groups.Customer(v1.Group("/customer"))
    }
    router.Run()
    ...
    

    【讨论】:

    • 帮我解决了?
    猜你喜欢
    • 2017-07-01
    • 2016-12-22
    • 2018-03-05
    • 1970-01-01
    • 2011-11-10
    • 2015-10-26
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多