Gin 的 Group,本质上是给交警中枢做分区。
r := gin.Default()
api := r.Group("/api")
v1 := api.Group("/v1")
v1.GET("/health", healthHandler)
v1.GET("/tickets/:id", getTicket)
v1.POST("/tickets", createTicket)这张图会变成:
总中枢
└── /api
└── /v1
├── GET /health
├── GET /tickets/:id
└── POST /tickets更重要的是,分组不只是为了 URL 更整齐,也是为了给某一片线路加自己的检查站。
authorized := r.Group("/api/v1")
authorized.Use(OfficerAuth())
authorized.GET("/tickets", listTickets)
authorized.POST("/tickets", createTicket)这表示:
/api/v1/*
└── 这一整片辖区都必须先经过 OfficerAuth如果项目变大,你脑子里一定要有这种结构感:
高速交警中枢
├── /api/v1/public -> 公开查询区
├── /api/v1/officer -> 执勤区
├── /api/v1/admin -> 管理区
└── /internal -> 内部联动区Group 是“辖区划分”,不是单纯的路径拼接。