跳转到内容

上下文

Context 提供对请求和响应数据的访问。

Fox 处理器可以选择性地接受 *gin.Context 参数:

r.GET("/path", func(c *gin.Context) (any, error) {
// 访问 context
return response, nil
})
name := c.Query("name") // 获取查询参数
page := c.DefaultQuery("page", "1") // 带默认值
r.GET("/user/:id", func(c *gin.Context) {
id := c.Param("id")
})
token := c.GetHeader("Authorization")
userAgent := c.Request.UserAgent()
var data map[string]any
c.ShouldBindJSON(&data)
ip := c.ClientIP()
c.JSON(200, gin.H{
"message": "success",
})
c.String(200, "Hello, World!")
c.HTML(200, "index.html", gin.H{
"title": "主页",
})
c.Redirect(302, "/new-path")
c.Status(204) // No Content
c.Set("user_id", 123)
userID := c.GetInt("user_id")
value, exists := c.Get("key")
userID := c.MustGet("user_id").(int)
file, _ := c.FormFile("file")
c.SaveUploadedFile(file, "./uploads/"+file.Filename)
form, _ := c.MultipartForm()
files := form.File["files"]
for _, file := range files {
c.SaveUploadedFile(file, "./uploads/"+file.Filename)
}
c.File("./assets/image.png")
c.SetCookie(
"session_id", // name
"abc123", // value
3600, // maxAge (seconds)
"/", // path
"example.com", // domain
false, // secure
true, // httpOnly
)
value, err := c.Cookie("session_id")

停止处理并返回:

if !isAuthenticated(c) {
c.JSON(401, gin.H{"error": "未授权"})
c.Abort()
return
}
logger := fox.GetLogger(c)
logger.Info("处理请求")
traceID := fox.GetTraceID(c)