Gin的请求与响应

请求

  Gin的请求对象被封装在gin.Context这个结构体指针中

1
2
3
4
5
6
7
8
9
10
11
12
13
fmt.Println(c.Request.Method) // 请求方式
fmt.Println(c.Request.Header)   // 请求头
fmt.Println(c.Request.RemoteAddr) // 客户端地址和端口
fmt.Println(c.Request.Host) // 服务端地址和端口
 
fmt.Println(c.Request.Cookies()) // cookie
fmt.Println(c.Request.UserAgent()) // 客户端类型
fmt.Println(c.FullPath())       // 请求路径,不带?后的数据
 
 
fmt.Println(c.Request.Body) // 请求体,body体
body,_ := ioutil.ReadAll(c.Request.Body)
fmt.Println("---body--"+string(body))

 响应

  返回字符串c.String

1
2
3
r.GET("/test", func(c *gin.Context) {
    c.String(200,"成功")
})

  返回json格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
r.GET("/json", func(c *gin.Context) {
        // 1 方式一,直接返回map格式
        var m = map[string]interface{}{
            "name": "lqz",
            "age":  19,
        }
        c.JSON(200, m)
        // 2 方式二,借助gin.H, gin.H 是 map[string]interface{}的缩写
        c.JSON(200, gin.H{"name": "lqz", "age": 19})
        // 3 方式三:直接返回结构体,注意大写,导出字段
        c.JSON(200, struct {
            Name string `json:"user"`
            Age  int
        }{"lqz", 19})
    })

  返回json数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main
 
import (
    "github.com/gin-gonic/gin"
)
 
func main() {
    router := gin.Default()
    router.GET("/json", func(c *gin.Context) {
        type Person struct {
            Name string `json:"name"`
            Age  int    `json:"age"`
        }
        var personList = []Person{{"lqz", 19}, {"彭于晏", 22}, {"林俊杰", 39}}
        c.IndentedJSON(200, personList)
    })
    router.Run(":8000")
}

  返回xml格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func main() {
    r := gin.Default()
    r.GET("/xml", func(c *gin.Context) {
        // 1 方式一:使用gin.H
        c.XML(200,gin.H{"name":"lqz","age":19})
        // 2 方式二:使用结构体
        type Person struct {
            Name string `xml:"user"`
            Age int
        }
        var lqz Person=Person{"lqz",19}
        c.XML(200,lqz)
 
    })
 
    r.Run(":8000")
}

  返回YAML格式

1
2
3
router.GET("/yaml", func(c *gin.Context) {
        c.YAML(200, gin.H{"name": "lqz", "age": 19})
    })

  重定向

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main
 
import (
   "net/http"
 
   "github.com/gin-gonic/gin"
)
 
func main() {
   r := gin.Default()
   r.GET("/index", func(c *gin.Context) {
      c.Redirect(http.StatusMovedPermanently, "http://www.liuqingzheng.top")
   })
   r.Run()
}

重定向使用 jsoniter编译

  jsoniter:https://github.com/json-iterator/go

  Gin 使用 encoding/json 作为默认的 json 包,但是你可以在编译中使用标签将其修改为 jsoniter

1
go build -tags=jsoniter .

  

posted @   那就凑个整吧  阅读(124)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示