## 路由分组
路由分组功能允许把相同前缀的路由定义合并分组,这样可以提高路由匹配的效率,而且为后面的`路由限流` `路由中间件`打下基础。
例如我们有以下两个路由:
```
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
```
- 序言
- 基础
- 安装GoHub
- 目录结构
- 开发规范
- 部署项目
- 架构
- 架构总览
- 生命周期
- 配置
- 配置介绍
- 配置目录
- 配置格式
- 配置加载
- 读取配置
- 动态配置
- 环境变量配置
- 路由
- 路由模式
- 路由定义
- 路由参数
- 路由分组
- 路由限流
- 路由拆分
- 控制器
- 控制定义
- 控制器初始化
- 中间件
- Make创建控制器
- 请求
- 请求信息
- 数据库
- 连接数据库
- 基本使用
- Make创建模型
- 日志
- 介绍
- 日志驱动
- 日志写入
- HTTP日志
- 数据库请求日志
- 错误和调试
- Debuger调试器
- 验证
- 验证器
- 验证规则
- Make创建验证器
- 杂项
- 缓存
- 分页
- 验证码
- CURL请求
- 命令行
- 基础知识
- console 包
- Cobra 基础
- 命令行模式
- 附录
- 配置参考
- 第三方依赖库