Gin框架-响应
大约 1 分钟
响应
响应字符串
router.GET("/string", func(c *gin.Context) {
c.String(http.StatusOK, "返回字符串")
})
响应JSON
router.GET("/json", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "hey", "status": http.StatusOK})
})
// 结构体转json
router.GET("/moreJSON", func(c *gin.Context) {
// You also can use a struct
type Msg struct {
Name string `json:"user"`
Message string
Number int
}
msg := Msg{"lsx", "hey", 21}
// 注意 msg.Name 变成了 "user" 字段
// 以下方式都会输出 : {"user": "lsx", "Message": "hey", "Number": 123}
c.JSON(http.StatusOK, msg)
})
响应文件
r.GET("", func(c *gin.Context) {
c.Header("Content-Type", "application/octet-stream") // 文件流, 唤起浏览器下载
// 指定下载的文件名
c.Header("Content-Disposition", "attachment; filename=response_html.go")
c.File("response/response_html.go") // 文件名要对
})
响应HTML
先在项目目录下创建文件夹response, 在response目录下定义templates文件夹, 在该目录下定义index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{.title}}</title>
</head>
<body>
原神启动
</body>
</html>
r.LoadHTMLGlob("response/templates/*") // 加载模版
r.GET("/", func(c *gin.Context) {
// 根据完整文件名渲染模板, 传递参数
c.HTML(http.StatusOK, "index.html", map[string]any{
"title": "lsxlove",
})
})
重定向
router.GET("/redirect", func(c *gin.Context) {
//支持内部和外部的重定向
c.Redirect(http.StatusMovedPermanently, "http://www.baidu.com/")
})