本篇內容我們對`GoHub`的請求的生命周期做大致的介紹,以便于開發者了解整個執行流程。
## 1.入口文件
用戶發起的請求都會經過應用的入口文件,通常是`main.go`文件,這也是`Go`要求的。
**通常,我們不建議在應用入口文件中加入過多的代碼,尤其是和業務邏輯相關的代碼。**
在`main.go`中的`main`的方法會依次執行下面操作:
* 加載`cmd`命令;
* 加載配置文件;
* 初始化日志
* 設置 `Gin` 的運行模式,支持 `debug`, `release`, `test`
* `new` 一個 `Gin Engine` 實例
* 初始化`DB`
* 初始化`Redis`;
* 注冊錯誤和異常處理機制;
* 初始化路由綁定;
* 運行服務;
## 2.分發請求
項目 API 路由,都會統一放在 routes/api.go 文件中。一個基礎的示例路由如下:
```
// Package routes 注冊路由
package routes
import (
"net/http"
"github.com/gin-gonic/gin"
)
// RegisterAPIRoutes 注冊網頁相關路由
func RegisterAPIRoutes(r *gin.Engine) {
// 測試一個 v1 的路由組,我們所有的 v1 版本的路由都將存放到這里
v1 := r.Group("/v1")
{
// 注冊一個路由
v1.GET("/", func(c *gin.Context) {
// 以 JSON 格式響應
c.JSON(http.StatusOK, gin.H{
"Hello": "GoHub!",
})
})
}
}
```
## 10.響應輸出
控制器調用后的返回數據通過`response`包操作,其中包括`ShowError` `ShowSuccess`兩個方法,與`PHP`框架不同的是無需`return` 你可以在任何地方輸出如下示例進行返回,如果返回后跟隨`return` 那么程序就不會繼續執行了。
- 序言
- 基礎
- 安裝GoHub
- 目錄結構
- 開發規范
- 部署項目
- 架構
- 架構總覽
- 生命周期
- 配置
- 配置介紹
- 配置目錄
- 配置格式
- 配置加載
- 讀取配置
- 動態配置
- 環境變量配置
- 路由
- 路由模式
- 路由定義
- 路由參數
- 路由分組
- 路由限流
- 路由拆分
- 控制器
- 控制定義
- 控制器初始化
- 中間件
- Make創建控制器
- 請求
- 請求信息
- 數據庫
- 連接數據庫
- 基本使用
- Make創建模型
- 日志
- 介紹
- 日志驅動
- 日志寫入
- HTTP日志
- 數據庫請求日志
- 錯誤和調試
- Debuger調試器
- 驗證
- 驗證器
- 驗證規則
- Make創建驗證器
- 雜項
- 緩存
- 分頁
- 驗證碼
- CURL請求
- 命令行
- 基礎知識
- console 包
- Cobra 基礎
- 命令行模式
- 附錄
- 配置參考
- 第三方依賴庫