Skip to content
On this page

路由分组

可以针对不同的功能模块对路由分组

  • 使用router.Group(name)定义一个群组
Go
package main

import "github.com/gin-gonic/gin"

type SuccessRes struct {
	Code int `json:"code"`
	Msg string `json:"msg"`
	Data any `json:"data"`
}

func main() {
	router := gin.Default()
  // 定义user组路由
	userRouter := router.Group("/user")
	{
		userRouter.GET("/info", func (ctx *gin.Context) {
			ctx.JSON(200, SuccessRes{0, "成功", gin.H{"userName": "张三", "age": 22} })
		})
		userRouter.GET("/id", func (ctx *gin.Context) {
			ctx.JSON(200, SuccessRes{0, "成功", 1 })
		})
	}
	router.Run(":9100")
}

访问/user/info/user/id

  • 路由嵌套
Go
package main

import "github.com/gin-gonic/gin"

type SuccessRes struct {
	Code int `json:"code"`
	Msg string `json:"msg"`
	Data any `json:"data"`
}

func main() {
	router := gin.Default()

	userRouter := router.Group("/user")
	{
		userRouter.GET("/info", func (ctx *gin.Context) {
			ctx.JSON(200, SuccessRes{0, "成功", gin.H{"userName": "张三", "age": 22} })
		})
		userRouter.GET("/id", func (ctx *gin.Context) {
			ctx.JSON(200, SuccessRes{0, "成功", 1 })
		})
		// /user 中再声明一个群组
		userV1 := userRouter.Group("/v1")
		{
			userV1.GET("/name", func (ctx *gin.Context) {
				ctx.JSON(200, SuccessRes{0, "成功", "张三" })
			})
		}
		{
			userV1.GET("/401", func (ctx *gin.Context) {
				ctx.JSON(401, SuccessRes{-1, "无权限", nil})
			})
		}
	}
	router.Run(":9100")
}

访问/user/v1/name/user/v1/401