人生苦短,我用 Golang--Gin 框架(三-

 前面我們基本瞭解了 gin 框架的路由建立和獲取用戶參數,今天我們來看下怎麼拆分路由**”**

前面的文章中,我們都只是建立了一個 "\hello" 的路由,那隨着我們需求的增多,總不能在一個文件中,寫一大串代碼吧。有沒有什麼好的辦法呢?

今天就讓我們來看下 gin 框架的路由拆分。

因爲我也是初學者,所以我的拆分方法不一定是最好的,大家可以參考並選擇性優化。

首先,我們先在項目路徑下新建一個 router 的包,然後我們計劃把所有路由信息都放在這個包下。

比如,我們現在有以下幾個路由,用戶的、文件的等等。

那麼,我們就創建一個 user.go、attach.go,然後將所有的路由信息都放在這兩個文件中去。我們先以 user.go 爲例,來看一下。

package router
import (
  "demo/src/main/cache"
  "demo/src/main/config"
  "demo/src/main/service"
  "demo/src/main/structs"
  "demo/src/main/util"
  "encoding/base64"
  "github.com/gin-gonic/gin"
  "strconv"
  "strings"
)
func LoadUser(e *gin.Engine)  {
  u := e.Group("/user")
  {
    l := u.Group("/login")
    {
      l.POST("/enterLogin", loginHandler)
      l.POST("/refresh", refreshHandler)
      l.POST("/exit", exitHandler)
    }
    r := u.Group("/register")
    {
      r.POST("/getRandCode", regRandCodeHandler)
    }
  }
}
func loginRandCodeHandler(c *gin.Context)  {
}
func loginHandler(c *gin.Context) {
}
func refreshHandler(c *gin.Context)  {
}
func exitHandler(c *gin.Context)  {
}
func regRandCodeHandler(c *gin.Context) {
}
func regFirstHandler(c *gin.Context)  {
}

上面的代碼中總共定義了 4 個路由,並按照業務邏輯進行了拆分。其中的核心是 LoadUser() 這個方法,在這裏面我們用 Group() 方法對路由進行了簡單拆分。

那麼現在我們怎麼使用這個方法呢?

package main
import (
  "demo/src/main/router"
  "github.com/gin-gonic/gin"
  "io"
  "os"
)
func main()  {
}
func init()  {
  gin.DisableConsoleColor()
  f, _ := os.Create("go.log")
  gin.DefaultWriter = io.MultiWriter(f, os.Stdout)
  r := gin.New()
  r.Use(gin.Logger())
  // 這裏我們調用剛纔的LoadUser()方法
  router.LoadUser(r)
  _ = r.Run(":81")
}

在 main 包中我們在運行前調用剛纔的方法即可。

不知道大家有沒有學會呢?

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/MsBIv1xxy_e0KFPoyUpeuA