-
基本介绍
gin.Context是 Gin 框架中最重要的对象之一,它包含了请求和响应的所有信息,如请求头、请求参数、请求体、响应状态码、响应体等。通过这个上下文对象,可以方便地处理 HTTP 请求和响应的各种细节。
-
常用方法
-
获取请求参数
-
Query方法:用于获取 URL 中的查询参数。例如,对于请求http://example.com?name=John&age=30,可以使用以下方式获取参数:
-
-
r.GET("/example", func(c *gin.Context) {
name := c.Query("name")
age := c.Query("age")
c.JSON(200, gin.H{"name": name, "age": age})
})
-
Param方法:用于获取路由中的参数。例如,对于路由/user/:id,当请求/user/123时,可以这样获取id参数:
r.GET("/user/:id", func(c *gin.Context) {
id := c.Param("id")
c.JSON(200, gin.H{"id": id})
})
-
ShouldBindJSON方法:用于绑定 JSON 格式的请求体数据到一个结构体。假设客户端发送了一个 JSON 数据{"name": "John", "age": 30},可以使用以下方式接收:
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
r.POST("/user", func(c *gin.Context) {
var user User
if err := c.ShouldBindJSON(&user); err!= nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
c.JSON(200, gin.H{"user": user})
})
-
设置和获取响应相关信息
-
JSON方法:用于返回一个 JSON 格式的响应。例如:
-
r.GET("/data", func(c *gin.Context) {
data := gin.H{"message": "Hello, Gin!"}
c.JSON(200, data)
})
-
String方法:用于返回一个字符串格式的响应。例如:
r.GET("/string", func(c *gin.Context) {
c.String(200, "This is a string response")
})
-
Status方法:用于获取或设置响应的状态码。如果要获取当前设置的状态码,可以直接调用c.Status()。如果要设置状态码,可以在调用c.JSON、c.String等响应方法时作为第一个参数传入。例如:
r.GET("/set-status", func(c *gin.Context) {
c.Status(201)
c.JSON(201, gin.H{"message": "Created"})
})
-
处理请求头相关操作
GetHeader方法:用于获取请求头中的指定字段。例如,要获取User - Agent请求头,可以这样做:
r.GET("/header", func(c *gin.Context) {
userAgent := c.GetHeader("User - Agent")
c.JSON(200, gin.H{"user_agent": userAgent})
})
Set方法(用于响应头) :用于设置响应头中的字段。例如,设置Content - Type响应头为application/json:
r.GET("/set-header", func(c *gin.Context) {
c.Header("Content - Type", "application/json")
c.JSON(200, gin.H{"message": "Header set"})
})