(1) 获取查询参数
- context.Query()
context.DefaultQuery()
engine.GET("/hello", func(context *gin.Context) {
fmt.Println(context.FullPath())
username := context.Query("name")
fmt.Println(username)
context.Writer.Write([]byte("Hello," + username))
})
(2) 获取路径参数
context.Param()
engine.DELETE("/user/:id", DeleteHandle)
func DeleteHandle(context *gin.Context) {
fmt.Println(context.FullPath())
userID := context.Param("id")
fmt.Println(userID)
context.Writer.Write([]byte("Delete user's id : " + userID))
}
(3) 获取Form参数
engine.POST("/user/search", func(c *gin.Context) {
// DefaultPostForm取不到值时会返回指定的默认值
//username := c.DefaultPostForm("username", "小王子")
username := c.PostForm("username")
address := c.PostForm("address")
//输出json结果给调用方
c.JSON(http.StatusOK, gin.H{
"message": "ok",
"username": username,
"address": address,
})
})
(4) 获取Json参数
enginer.POST("/json", func(c *gin.Context) {
// 注意:下面为了举例子方便,暂时忽略了错误处理
b, _ := c.GetRawData() // 从c.Request.Body读取请求数据
// 定义map或结构体
var m map[string]interface{}
// 反序列化
_ = json.Unmarshal(b, &m)
c.JSON(http.StatusOK, m)
})
(5) 获取Header
// 验证token的中间件
func Auth(c *gin.Context) {
tokenHeader := c.Request.Header["token"]
if len(tokenHeader) == 0 {
c.Abort()
}
tokenString := tokenHeader[0]
if GetTokenUid(tokenString) == 0 {
c.Abort()
}
c.Next() // 认证通过, 调用后续的处理函数
}