func main() { r := gin.Default() //配置模板文件 r.LoadHTMLGlob("templates/*") //返回字符串信息 r.GET("/string", func(c *gin.Context) { c.String(200, "value %v", "index") }) r.Run() }
func main() { r := gin.Default() //配置模板文件 r.LoadHTMLGlob("templates/*") //返回json信息 r.GET("/json1", func(c *gin.Context) { c.JSON(200, map[string]interface{}{ "name": "liyatai", "age": 21, }) }) r.Run() }
gin提供了一种数据结构来代替map[string]interface{},
func main() { r := gin.Default() //配置模板文件 r.LoadHTMLGlob("templates/*") //返回json信息 r.GET("/json2", func(c *gin.Context) { c.JSON(200, gin.H{ "name": "zhangfei", "age": 55, }) }) r.Run() }
此外gin还能将结构体数据直接返回成json,这里结构体里面的属性名称首字母必须大写,不然返回的就是空数据。
//结构体数据 type Student struct { Name string Year int Major string } func main() { r := gin.Default() //配置模板文件 r.LoadHTMLGlob("templates/*") //返回json信息 r.GET("/json2", func(c *gin.Context) { c.JSON(200, gin.H{ "name": "zhangfei", "age": 55, }) }) r.Run() }
如果想展示带有首字母小写名称属性的结构体数据的json形式,那么需要额外增加字段
type Teacher struct { Name string `json:"name"` Age string `json:"age"` Level string `json:"level"` } func main() { r := gin.Default() //配置模板文件 r.LoadHTMLGlob("templates/*") //返回json信息 r.GET("/json4", func(c *gin.Context) { a := Teacher{"Joe", "44", "doctor"} c.JSON(200, a) }) r.Run() }
jsonp请求,可以跟回调函数,主要解决跨域的请求
type Teacher struct { Name string `json:"name"` Age string `json:"age"` Level string `json:"level"` } func main() { r := gin.Default() //配置模板文件 r.LoadHTMLGlob("templates/*") //返回json信息 r.GET("/jsonp", func(c *gin.Context) { a := Teacher{"Joe-jsonp", "44-jsonp", "doctor-jsonp"} c.JSONP(200, a) }) r.Run() }
gin可以返回xml数据格式
func main() { r := gin.Default() //配置模板文件 r.LoadHTMLGlob("templates/*") //返回json信息 r.GET("/xml", func(c *gin.Context) { c.XML(200, gin.H{ "size": "66k", "location": "c:/program/files/doc", "type": "docx", }) }) r.Run() }
gin有专门渲染前端页面的工具
1、先要在文件夹下新家一个存放html文件的文件夹templates,然后在声明路由以后,配置模板文件
go代码
func main() { r := gin.Default() //配置模板文件 r.LoadHTMLGlob("templates/*") //返回json信息 r.GET("/news", func(c *gin.Context) { c.HTML(200, "news.html", gin.H{ "title": "后台数据", "link": "这是一个链接", }) }) r.Run() }
前端页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h2>{{.title}}</h2> <a href="https://www.baidu.com">{{.link}}</a> /*获取go返回的数据*/ </body> </html>