目錄
1. gin.Context概念
2. 創建用於測試的gin.Context
3. 如何初始化context.Params
Context的概念
通俗理解:Context就是程序(web應用)的運行環境(容器),里面存放了應用程序的所有資源(web應用相關的一些設置和全局變量),你要使用資源時就訪問它,也可以存放東西。
context就是“容器”,放的就是應用程序的所有資源,要用時候就訪問它,所以context里面的東西,在同一個應用程序里面是全局的;web上下文可以看成web應用的運行環境,一般用context名字來修飾,里面保存了web應用相關的一些設置和全局變量.
gin.Context是 gin 中最重要的部分。它允許我們在中間件之間傳遞變量, 管理流程,例如驗證請求的 JSON 並呈現 JSON 響應。
gin.Context的定義
type Context struct {
// responseWriter對ResponseWriter封裝
writermem responseWriter
// http請求及響應writer
Request *http.Request
Writer ResponseWriter
// 鍵值對切片類型
Params Params
……
}
創建用於測試的gin.Context
測試示例:
import (
"net/http/httptest"
"github.com/gin-gonic/gin"
)
func main(){
// 創建用於測試的gin.Context,Recorder是響應記錄器
c, _ := gin.CreateTestContext(httptest.NewRecorder())
// 添加context的參數Params
c.Params = []gin.Param{
gin.Param{Key: "key", Value: "value"},
}
// 取出context參數params中的值
key := c.Param("key")
}
如何初始化context.Params
為什么c.Params為什么要這樣初始化?
通過查閱gin源代碼可以找到Params的定義,如下
type Params []Param
// Param是一個URL參數, 由key和value組成
type Param struct {
Key string
Value string
}
- Params是Param數組
- Param是包含key,value的結構體
所以Params的定義就是初始化一個包含key和value兩種屬性的結構體數組