Golang的gin web框架中对于响应的一些处理操作
通过阅读此篇文章,你会收获什么?
你将会收获到gin框架中对HTTP请求的响应操作,响应操作是对HTTP请求返回特定格式的数据,例如:字符串、JSON、XML、YAML、HTML、路由重定向、文件。另外,你还会了解到XML、YAML、HTML三种文件格式之间的差别,返回文件响应的三种函数方法
目录
返回字符串
// 返回字符串
router.GET("/string", func(context *gin.Context) {
context.String(http.StatusOK, "Hello World!")
})
返回JSON
// 返回JSON
router.GET("/json", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "Hello World!", "status": http.StatusOK})
})
返回JSON(通过结构体)
// 通过结构体返回JSON
router.GET("/moreJSON", func(c *gin.Context) {
type MSG struct {
Name string `json:"user"`
Message string
Number int
}
// tips: msg.Name 变成 msg.user
msg := MSG{"bob", "Hello World!", 21}
c.JSON(http.StatusOK, msg)
})
返回XML
// 返回xml
router.GET("/xml", func(c *gin.Context) {
c.XML(http.StatusOK, gin.H{"user": "bob", "message": "Hello World!", "status": http.StatusOK})
})
返回YAML
// 返回yaml
router.GET("/yaml", func(c *gin.Context) {
c.YAML(http.StatusOK, gin.H{"user": "bob", "message": "Hello World!", "status": http.StatusOK})
})
返回HTML
// 返回html
router.LoadHTMLGlob("templates/posts/*")
router.GET("/html", func(c *gin.Context) {
c.HTML(http.StatusOK, "index.tmpl", gin.H{"title": "posts"})
})
HTML、YAML、XML的区别
XML和YAML都是配置文件,用于指定类与类之间的关系
XML被设计用来存储和传输数据,其焦点是数据的内容
YAML的作用与XML相同,但作为一种比XML更加简单易读的序列话语言,正被越来越多地用来应用的配置文件开发中
HTML被设计用来显示数据,其焦点是数据的外观
路由重定向
// 路由重定向至百度
router.GET("/redirect", func(c *gin.Context) {
c.Redirect(http.StatusMovedPermanently, "https://www.baidu.com/")
})
文件响应
// 文件响应
// 在golang中,没有相对文件的路径,只有相对项目的路径
// 加载静态资源,例如:网站的CSS、JS
router.Static("/static", "static")
// 指定某个目录为静态资源目录,可直接访问该目录下的静态资源,URL要具体到文件名称(一般是是用户上传的文件)
router.StaticFS("/upload", http.Dir("static"))
// 加载单个静态文件(指定某个具体的文件作为静态资源访问)
router.StaticFile("/test01.png", "static/test01.png")
router.Static
指定某目录为静态资源目录,可访问该目录下的资源,URL要具体到资源名称
router.StaticFS
功能同router.Static,但是会列出该目录下的所有文件
router.StaticFile
指定某个具体的文件作为静态资源访问