栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Gin之获取form表单参数

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Gin之获取form表单参数

文章目录
  • Gin之获取form参数
    • 1.获取form参数介绍
    • 2.错误获取form表单参数
    • 3.获取form表单参数(PostForm方法)
    • 4.获取form表单参数(DefaultPostForm方法)
    • 5.获取form表单参数(GetPostForm方法)
    • 6.获取form表单参数(PostFormMap方法)
    • 7.获取form表单复选框参数(ShouldBind方法)
    • 8.获取form表单参数(ShouldBind方法)
    • 9.获取form表单参数(ShouldBind方法)

Gin之获取form参数

注:本文基于Windos系统上Go SDK v1.17.5、github.com/gin-gonic/gin v1.7.7依赖进行讲解

1.获取form参数介绍

比如登录、注册,通常都用form表单,而且使用的是post形式

2.错误获取form表单参数
package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	r := gin.Default()
	r.LoadHTMLFiles("./login.html") //加载模板文件
	r.GET("/web", func(c *gin.Context) {
		c.HTML(http.StatusOK, "login.html", nil)
	})
	r.Run()
}




    
    login


输入网址后,页面如图显示,以及后台



当在输入账户与密码后,点击登录网页404出现,原因是一次请求对应一次响应,点击登录请求后没有响应


3.获取form表单参数(PostForm方法)
package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	r := gin.Default()
	r.LoadHTMLFiles("./login.html", "index.html") //加载模板文件
	r.GET("/web", func(c *gin.Context) {
		c.HTML(http.StatusOK, "login.html", nil)
	})
	r.POST("/login", func(c *gin.Context) {
		//PostForm是*Context的方法,参数是(key string),返回值是string {
		//需要与usename那个框在login.html文件的代码对应( 里的name后面的引号里的内容)
		username := c.PostForm("username") //用来接受form表单框输入的里传来的用户名
		password := c.PostForm("password")
		c.HTML(http.StatusOK, "index.html", gin.H{
			"Name":     username,
			"Password": password,
		})
	})
	r.Run()
}




    
    login





    
    index


hello, {{ .Name }} !

你的密码是:{{ .Password }}

输入网址后,页面如图显示,以及后台



输入用户密码后,点击登录


4.获取form表单参数(DefaultPostForm方法)
package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	r := gin.Default()
	r.LoadHTMLFiles("./login.html", "index.html") //加载模板文件
	r.GET("/web", func(c *gin.Context) {
		c.HTML(http.StatusOK, "login.html", nil)
	})
	r.POST("/login", func(c *gin.Context) {
		username := c.DefaultPostForm("username", "aaaa")
		password := c.DefaultPostForm("xxxxx", "bbbbb")
		c.HTML(http.StatusOK, "index.html", gin.H{
			"Name":     username,
			"Password": password,
		})
	})
	r.Run()
}




    
    login





    
    index


hello, {{ .Name }} !

你的密码是:{{ .Password }}

5.获取form表单参数(GetPostForm方法)
package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	r := gin.Default()
	r.LoadHTMLFiles("./login.html", "index.html") //加载模板文件
	r.GET("/web", func(c *gin.Context) {
		c.HTML(http.StatusOK, "login.html", nil)
	})
	r.POST("/login", func(c *gin.Context) {
		//GetPostForm是*Context的一个方法,传入的参数是(key string),返回值是(string, bool) 
		username, ok1 := c.GetPostForm("username")
		password, ok2 := c.GetPostForm("xxxxx")
		if !ok1 {
			username = "qqqqqqqq"
		}
		if !ok2 {
			password = "zzzzzzzz"
		}
		c.HTML(http.StatusOK, "index.html", gin.H{
			"Name":     username,
			"Password": password,
		})
	})
	r.Run()
}




    
    login





    
    index


hello, {{ .Name }} !

你的密码是:{{ .Password }}

6.获取form表单参数(PostFormMap方法)
package main

import (
	"github.com/gin-gonic/gin"
)

func main() {
	router := gin.Default()

	router.POST("/post", func(c *gin.Context) {
		names := c.PostFormMap("names")
		c.JSON(200, gin.H{
			"AAA": names,
		})
	})
	router.Run(":8080")
}

7.获取form表单复选框参数(ShouldBind方法)

8.获取form表单参数(ShouldBind方法)
package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"net/http"
)


type UserInfo struct {
	Username string `form:"username"`
	Password string `form:"password"`
}

func main() {
	r := gin.Default()
	r.POST("/user", func(c *gin.Context) {
		var u UserInfo
		err := c.ShouldBind(&u)
		if err != nil {
			c.JSON(http.StatusBadRequest, gin.H{
				"error": err.Error(),
			})
		} else {
			fmt.Printf("%#vn", u)
			c.JSON(http.StatusOK, gin.H{
				"status": "ok",
			})
		}
	})
	r.Run()
}

注:form-data数据是自己填进去的

9.获取form表单参数(ShouldBind方法)
package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"net/http"
)


type UserInfo struct {
	Username string `form:"username"`
	Password string `form:"password"`
}

func main() {
	r := gin.Default()
	r.LoadHTMLFiles("./index.html")
	r.GET("/index", func(c *gin.Context) {
		c.HTML(http.StatusOK, "index.html", nil)
	})
	r.POST("/user", func(c *gin.Context) {
		var u UserInfo
		err := c.ShouldBind(&u)
		if err != nil {
			c.JSON(http.StatusBadRequest, gin.H{
				"error": err.Error(),
			})
		} else {
			fmt.Printf("%#vn", u)
			c.JSON(http.StatusOK, gin.H{
				"status": "ok",
			})
		}
	})
	r.Run()
}




    
    login


用户名: 密码:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/965528.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号