GET POST 以及获取 Get Post 传值
2021/10/19 23:11:46
本文主要是介绍GET POST 以及获取 Get Post 传值,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
GET POST 以及获取 Get Post 传值
package main import ( "encoding/xml" "fmt" "github.com/gin-gonic/gin" "html/template" "net/http" "time" ) 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"` } // UnixToTime 时间戳转换成日期 func UnixToTime(timestamp int) string { fmt.Println(timestamp) t := time.Unix(int64(timestamp), 0) return t.Format("2006-01-02 15:04:05") } func Println(str1 string, str2 string) string { fmt.Println(str1, str2) return str1 + "-----" + str2 } func main() { r := gin.Default() //配置自定义模板函数 r.SetFuncMap(template.FuncMap{ //注册模板函数 "UnixToTime": UnixToTime, "Println": Println, }) //配置模板文件的路径,放在路由配置的前面:加载templates下的所有文件 r.LoadHTMLGlob("templates/**/*") //静态资源,第一个参数是路由,第二个是本地的目录 r.Static("/static", "./static") //Get 请求传值 //请求方式:http://localhost:8080/?username=1&age=12&password=123 r.GET("/", func(c *gin.Context) { username :=c.Query("username") age :=c.Query("age") //DefaultQuery:有返回值赋值,不存在给默认值1 page :=c.DefaultQuery("page","1") password :=c.Query("password") c.JSON(http.StatusOK,gin.H{ "username":username, "age":age, "page":page, "password":password, }) }) //Get请求传值 id //http://localhost:8080/article?id=12 r.GET("/article", func(c *gin.Context) { id := c.DefaultQuery("id","1") c.JSON(http.StatusOK,gin.H{ "mag":"新闻详情", "id":id, }) }) //post演示 //http://localhost:8080/article?id=12 r.GET("/user", func(c *gin.Context) { c.HTML(http.StatusOK,"default/user.html",gin.H{}) }) r.POST("/doAddUser", func(c *gin.Context) { //获取表单post过来的数据:一个一个获取 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 传递的数据绑定到结构体 r.GET("/getUser", func(c *gin.Context) { //实例化一个结构体 user :=&userInfo{} //ShouldBind:必须传入地址 if err := c.ShouldBind(&user);err ==nil{ //成功 fmt.Printf("%#v\n", user)//打印结构体数据 c.JSON(http.StatusOK,user) }else { //失败 c.JSON(http.StatusOK,gin.H{ "err":err.Error(), }) } }) //获取 Post Xml 数据 r.POST("/xml", func(c *gin.Context) { //实例化一个结构体 article :=&Article{} xmlSliceData, _ := c.GetRawData() // 从 c.Request.Body 读取xml请求数据 if err := xml.Unmarshal(xmlSliceData,article);err ==nil{ //成功 c.JSON(http.StatusOK,article) }else { //失败 c.JSON(http.StatusBadRequest,gin.H{ "err":err.Error(), }) }}) //动态路由传值 //localhost:8080/list/123 r.GET("/list/:cid", func(c *gin.Context) { cid := c.Param("cid") c.JSON(http.StatusOK,gin.H{ "cid":cid, }) }) r.Run() }
获取 Post Xml 数据:使用场景,支付接口
获取xml数据,使用Unmarshal解析到结构体中,然后转换为json格式返回给前台
这篇关于GET POST 以及获取 Get Post 传值的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-21订单系统资料入门教程:轻松管理你的订单
- 2024-09-21Java部署资料:新手入门教程
- 2024-09-21Java部署资料:新手入门教程
- 2024-09-21Java订单系统资料:新手入门教程与实战指南
- 2024-09-21Java管理系统资料入门教程
- 2024-09-21从零开始学习Java监控系统资料
- 2024-09-21Java就业项目资料:新手入门的必备教程
- 2024-09-21Java全端资料:初学者指南
- 2024-09-21Java全栈资料入门教程及资源汇总
- 2024-09-21Java日志系统资料入门教程