## 路由分組
路由分組功能允許把相同前綴的路由定義合并分組,這樣可以提高路由匹配的效率,而且為后面的`路由限流` `路由中間件`打下基礎。
例如我們有以下兩個路由:
```
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 基礎
- 命令行模式
- 附錄
- 配置參考
- 第三方依賴庫