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