gin獲取form提交的表單數據
- 編寫一個簡單的提交form表單的
login.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>
<form action="./login" method="POST" novalidate autocomplete="off">
<!-- sction: 提交的對象
method: 提交的函數-->
<div>
<label for="username">username:</label>
<input type="text" name="username" id="username">
</div>
<div>
<label for="password">password:</label>
<input type="password" name="password", id="password">
</div>
<div>
<input type="submit" value="登錄">
</div>
</form>
</body>
</html>
展現出來的效果如下:
- 在主函數中顯示
login.html
頁面.((也可以直接在postman中發起post請求,這樣就不用再編寫這個get請求頁面)
r.LoadHTMLFiles("./login.html")
// r.LoadHTMLGlob("./*")
r.GET("/login", func(c *gin.Context) {
c.HTML(http.StatusOK, "login.html", nil)
})
- 在
main.go
中獲取form提交的表單數據,并以json數據返回給前端(請不要在實際開發中這麼做,此處只是作為掩飾而這樣處理)
r.POST("/login", func(c *gin.Context) {
// DefaultPostForm取不到值时会返回指定的默认值
// username := c.DefaultPostForm("username", "小王子")
username := c.PostForm("username")
password := c.PostForm("password")
// 输出json结果给调用方
c.JSON(http.StatusOK, gin.H{
"Password": password,
"Username": username,
})
})
**說明: **
1. 同一個login頁面有兩個函數那是因爲一個get函數是瀏覽器向服務端發起get請求,另一個是發起post請求,兩個請求不相同,所以需要使用不同的函數來完成--一次請求只能獲取一次響應,不同的請求獲得不同的響應。
2. 在main.go
中PostForm
中的參數對應的是html頁面中'name'屬性值,而前面的變量名並不影響結果.
儅點擊登錄之後看到的結果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用