package mainimport ("encoding/xml""fmt""html/template""net/http""time""github.com/gin-gonic/gin")type UserInfo struct {Username string `json:"username" form:"username"`Password string `json:"password" form:"password"`}type Article struct {Title string `json:"title" xml:"title"`Content string `json:"content" xml:"content"`}//时间戳转换成日期func UnixToTime(timestamp int) string {fmt.Println(timestamp)t := time.Unix(int64(timestamp), 0)return t.Format("2006-01-02 15:04:05")}func main() {// 创建一个默认的路由引擎r := gin.Default()//自定义模板函数 注意要把这个函数放在加载模板前r.SetFuncMap(template.FuncMap{"UnixToTime": UnixToTime,})//加载模板 放在配置路由前面r.LoadHTMLGlob("templates/**/*")//配置静态web目录 第一个参数表示路由, 第二个参数表示映射的目录r.Static("/static", "./static")//Get 请求传值r.GET("/", func(c *gin.Context) {username := c.Query("username")age := c.Query("age")page := c.DefaultQuery("page", "1")c.JSON(http.StatusOK, gin.H{"username": username,"age": age,"page": page,})})//Get 请求传值 idr.GET("/article", func(c *gin.Context) {id := c.DefaultQuery("id", "1")c.JSON(http.StatusOK, gin.H{"msg": "新闻详情","id": id,})})//post演示r.GET("/user", func(c *gin.Context) {c.HTML(http.StatusOK, "default/user.html", gin.H{})})//获取表单post过来的数据r.POST("/doAddUser1", func(c *gin.Context) {username := c.PostForm("username")password := c.PostForm("password")age := c.DefaultPostForm("age", "20")c.JSON(http.StatusOK, gin.H{"username": username,"password": password,"age": age,})})//获取 GET POST 传递的数据绑定到结构体//http://localhost:8080/getUser?username=zhangsan&password=1111r.GET("/getUser", func(c *gin.Context) {user := &UserInfo{}if err := c.ShouldBind(&user); err == nil {fmt.Printf("%#v", user)c.JSON(http.StatusOK, user)} else {c.JSON(http.StatusOK, gin.H{"err": err.Error(),})}})r.POST("/doAddUser2", func(c *gin.Context) {user := &UserInfo{}if err := c.ShouldBind(&user); err == nil {c.JSON(http.StatusOK, user)} else {c.JSON(http.StatusBadRequest, gin.H{"err": err.Error(),})}})//获取 Post Xml 数据r.POST("/xml", func(c *gin.Context) {article := &Article{}xmlSliceData, _ := c.GetRawData() //获取 c.Request.Body 读取请求数据fmt.Println(xmlSliceData)if err := xml.Unmarshal(xmlSliceData, &article); err == nil {c.JSON(http.StatusOK, article)} else {c.JSON(http.StatusBadRequest, gin.H{"err": err.Error(),})}})// 动态路由传值// list/123 list/456r.GET("/list/:cid", func(c *gin.Context) {cid := c.Param("cid")c.String(200, "%v", cid)})//后台r.GET("/admin", func(c *gin.Context) {c.HTML(http.StatusOK, "admin/index.html", gin.H{"title": "后台首页",})})r.Run()}
{{ define "admin/index.html" }}<!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>这是后台首页</h2></body></html>{{ end }}
{{ define "admin/news.html" }}<!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>后台新闻页面</h2></body></html>{{ end }}
<!-- 相当于给模板定义一个名字 define end 成对出现-->{{ define "default/index.html" }}<!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><link rel="stylesheet" href="/static/css/base.css"></head><body><h1>Post演示</h1></body></html>{{ end }}
<!-- 相当于给模板定义一个名字 define end 成对出现-->{{ define "default/user.html" }}<!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><link rel="stylesheet" href="static/css/base.css"></head><body><form action="/doAddUser2" method="post">用户名:<input type="text" name="username" /> <br><br>密码:<input type="password" name="password" /> <br><br><input type="submit" value="提交"></form></body></html>{{end}}
<!-- 相当于给模板定义一个名字 define end 成对出现-->{{ define "public/page_footer.html" }}<h1>我是一个公共的底部</h1>{{end}}
<!-- 相当于给模板定义一个名字 define end 成对出现-->{{ define "public/page_header.html" }}<h1>我是一个公共的标题---{{.title}}</h1>{{end}}
源码.7z
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论