为了账号安全,请及时绑定邮箱和手机立即绑定

如何在杜松子酒中对路线进行分组?

如何在杜松子酒中对路线进行分组?

Go
aluckdog 2022-06-13 17:32:02
我想将我的路线分组在不同的文件中,所以主文件不会很乱。我想要在他们自己的文件中这样的东西:v1 := router.Group("/v1"){  v1.Group("users", usersRoutes)  v1.Group("pictures", picturesRoutes)  v1.Group("friends", friendsRoutes)}所以每一个*Routes看起来像这样:users := v1.Group("/users"){  users.GET("/", getUsers)  users.POST("/", createUser)}这可能吗?现在我的代码如下所示:package appimport (    "net/http"    "github.com/gin-gonic/gin")func getUrls() {    v1 := router.Group("/v1")    {        ping := v1.Group("/ping")        {            ping.GET("/", pongFunction)        }        users := v1.Group("/users")        {            users.GET("/", getUsersFunction)        }    }}但这将大大增加其规模。
查看完整描述

1 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

您需要将路由器变量存储在您的结构或全局变量中。然后各个 go 文件将向该变量添加处理程序。这是一个例子:


路线.go


package app


import (

    "github.com/gin-gonic/gin"

)


type routes struct {

    router *gin.Engine

}


func NewRoutes() routes {

    r := routes{

        router: gin.Default(),

    }


    v1 := r.router.Group("/v1")


    r.addPing(v1)

    r.addUsers(v1)


    return r

}


func (r routes) Run(addr ...string) error {

    return r.router.Run()

}

乒乓球


package app


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


func (r routes) addPing(rg *gin.RouterGroup) {

    ping := rg.Group("/ping")


    ping.GET("/", pongFunction)

}


func pongFunction(c *gin.Context) {

    c.JSON(200, gin.H{

        "message": "pong",

    })

}

用户.go


package app


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


func (r routes) addUsers(rg *gin.RouterGroup) {

    users := rg.Group("/users")


    users.GET("/", getUsersFunction)

}


func getUsersFunction(c *gin.Context) {

    c.JSON(200, gin.H{

        "users": "...",

    })

}


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信