其他分享
首页 > 其他分享> > gin项目的路由拆分与注册

gin项目的路由拆分与注册

作者:互联网

参考博客

https://www.liwenzhou.com/posts/Go/gin_routes_registry/

基本的路由注册

func TestRouterGroup(t *testing.T){
    // 定义默认引擎
    r := gin.Default()

    // 路由组 userGroup
    userGroup := r.Group("/user")
    {
        // /user/index
        userGroup.GET("/index",func(c *gin.Context){
            c.JSON(http.StatusOK,gin.H{
                "msg":"user.index",
            })
        })
        // /user/login
        userGroup.GET("/login",func(c *gin.Context){
            c.JSON(http.StatusOK,gin.H{
                "msg":"user.login",
            })
        })
    }

    // 路由组 shopGroup
    shopGroup := r.Group("/shop")
    {
        // shop/index
        shopGroup.GET("/index",func(c *gin.Context){
            c.JSON(http.StatusOK,gin.H{
                "msg":"shop.index",
            })
        })
        // shop/login
        shopGroup.GET("/login",func(c *gin.Context){
            c.JSON(http.StatusOK,gin.H{
                "msg":"shop.login",
            })
        })
    }

    // 启动服务
    r.Run("127.0.0.1:9900")
}
基本的路由注册

将路由拆分成单独的包

当项目的规模增大后就不太适合继续在项目的main.go文件中去实现路由注册相关逻辑了,我们会倾向于把路由部分的代码都拆分出来,形成一个单独的文件或包:

我们在routers.go文件中定义并注册路由信息:

目录结构

在 routers/r1.go 中加入视图函数与生成引擎的代码:

package routers

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

// 视图函数
func helloHandler(c *gin.Context) {
    c.JSON(http.StatusOK, gin.H{
        "status": "OK",
        "msg":    "hello Handler!",
    })
}

// 初始化路由的函数 注意首字母大写
func SetupRouter() *gin.Engine {
    // 默认引擎
    r := gin.Default()
    // 注册路由
    r.GET("/hello", helloHandler)

    return r
}

在 main.go 中引入并启动服务即可:

package main

import (
    "fmt"
    "ginRouters/routers"
)

func main() {
    router := routers.SetupRouter()

    if err := router.Run("127.0.0.1:9000"); err != nil{
        fmt.Println("启动服务失败!err>>> ",err.Error())
    }
}

路由拆分成多个文件

当我们的业务规模继续膨胀,单独的一个routers文件或包已经满足不了我们的需求了,

因为我们把所有的路由注册都写在一个SetupRouter函数中的话就会太复杂了。

我们可以分开定义多个路由文件:

 

 

123

123

标签:index,拆分,routers,func,gin,login,路由
来源: https://www.cnblogs.com/paulwhw/p/14103123.html