1. 程式人生 > 實用技巧 >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