gin專案的路由拆分與註冊
阿新 • • 發佈:2020-12-08
參考部落格
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/indexshopGroup.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