企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 路由分组 路由分组功能允许把相同前缀的路由定义合并分组,这样可以提高路由匹配的效率,而且为后面的`路由限流` `路由中间件`打下基础。 例如我们有以下两个路由: ``` r.GET("/index/login", func(c *gin.Context) {c.JSON(200, "Hello,world!")}) r.GET("/index/reg", func(c *gin.Context) {c.JSON(200, "Hello,world!")}) ``` 我们可以根据`index`进行分组把他们合并到一起去: ``` indexGroup := r.Group("/index") { indexGroup.GET("/login", func(c *gin.Context) {c.JSON(200, "Hello,world!")}) indexGroup.GET("/reg", func(c *gin.Context) {c.JSON(200, "Hello,world!")}) } ``` 此时访问的路由地址分别是: ``` http://127.0.0.1:3000/index/login http://127.0.0.1:3000/index/reg ``` 路由分组支持嵌套,例如: ``` indexGroup := r.Group("/index") { erGroup := r.Group("/er") { erGroup.GET("/login", func(c *gin.Context) {c.JSON(200, "Hello,world!")}) erGroup.GET("/reg", func(c *gin.Context) {c.JSON(200, "Hello,world!")}) } indexGroup.GET("/login", func(c *gin.Context) {c.JSON(200, "Hello,world!")}) indexGroup.GET("/reg", func(c *gin.Context) {c.JSON(200, "Hello,world!")}) } ``` 此时访问的路由地址分别是: ``` http://127.0.0.1:3000/index/login http://127.0.0.1:3000/index/reg http://127.0.0.1:3000/index/er/login http://127.0.0.1:3000/index/er/reg ``` 随着业务的发展,需求的不断变化,`API` 的迭代是必然的,很可能当前版本正在使用,而我们就得开发甚至上线一个不兼容的新版本,为了让旧用户可以正常使用,为了保证开发的顺利进行,我们需要控制好 `API` 的版本区分。 这里我们实现的是将版本号直接加入 URL 中: ``` // 所有的 v1 版本的路由都将存放到这里 v1 := r.Group("/v1") // 注册一个路由 v1.GET("/", func(c *gin.Context) { c.JSON(200, "Hello,world!") }) ``` 那么访问这个路由的方式是: ``` http://127.0.0.1:3000/v1 ```