[TOC]
## 簡單例子
> 提示:實際項目開發中不要把路由定義和控制器函數都寫在一個go文件,不方便維護,可以參考第一章的項目結構,規劃自己的業務模塊
~~~
package main
import "github.com/gin-gonic/gin"
func main() {
// 初始化一個http服務對象
r := gin.Default()
// 路由定義 [GET請求], url路徑為:/user/sayHello, 綁定sayHello控制器函數
r.GET("/user/sayHello", sayHello)
// 路由定義 [GET請求,綁定參數方式], url路徑為:/user/sayHello2, 綁定sayHello2控制器函數
r.GET("/user/sayHello2/:username", sayHello2)
// 路由定義 [POST請求], url路徑為:/user/login, 綁定doLogin控制器函數
r.POST("/user/login", doLogin)
r.Run() // 監聽并在 0.0.0.0:8080 上啟動服務
}
// 控制器函數
func sayHello(c *gin.Context) {
// 獲取post請求參數
username := c.Query("username")
// 通過請求上下文對象Context, 直接往客戶端返回一個字符串
c.String(200, "hello %s", username)
}
// 控制器函數
func sayHello2(c *gin.Context) {
// 獲取綁定參數
username := c.Param("username")
// 通過請求上下文對象Context, 直接往客戶端返回一個字符串
c.String(200, "hello %s", username)
}
// 控制器函數
func doLogin(c *gin.Context) {
// 獲取post請求參數
username := c.PostForm("username")
password := c.PostForm("password")
c.JSON(200, gin.H{
"username":username,
"password":password,
})
}
~~~
## 分組路由
> 在做api開發的時候,如果要支持多個api版本,我們可以通過分組路由來實現api版本處理
~~~
func main() {
router := gin.Default()
// 創建v1組
v1 := router.Group("/v1")
{
// 在v1這個分組下,注冊路由
v1.POST("/login", loginEndpoint)
v1.POST("/submit", submitEndpoint)
}
// 創建v2組
v2 := router.Group("/v2")
{
// 在v2這個分組下,注冊路由
v2.POST("/login", loginEndpoint)
v2.POST("/submit", submitEndpoint)
}
router.Run(":8080")
}
~~~
> 上面例子將會注冊以下路徑
> /v1/login
> /v1/submit
> /v2/login
> /v2/submit
- 基礎知識
- 開發環境
- 包名規則
- 包初始化 (init)
- 基礎數據類型
- 基礎類型轉換
- 格式化輸出
- go指針
- 流程控制語句
- 函數定義
- 匿名函數
- 數組和切片
- map集合
- 結構體
- Interface接口
- 日期處理
- 數學計算
- 正則表達式
- 協程 (并發處理)
- channel
- waitgroup
- mutex (鎖機制)
- websocket
- protobuf
- Redis
- 錯誤處理
- 打包程序
- NSQ消息隊列
- 單元測試
- beego
- 安裝入門
- Gin
- 快速入門
- 路由與控制器
- 處理請求參數
- 表單驗證
- 處理響應結果
- 渲染HTML模版
- 訪問靜態文件
- Gin中間件
- Cookie處理
- Session處理
- Gin上傳文件
- swagger
- pprof性能測試
- GORM
- 入門教程
- 模型定義
- 數據庫連接
- 插入數據
- 查詢數據
- 更新數據
- 刪除數據
- 事務處理
- 關聯查詢
- 屬于 (BELONG TO)
- 一對一 (Has One)
- 一對多 (Has Many)
- 多對多 (Many to Many)
- 預加載 (Preloading)
- 錯誤處理
- 第三方常用插件
- viper 讀取配置文件
- zap 高性能日志
- Nginx代理配置
- Goland 快捷鍵