提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
gin获取querystring参数
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/web", func(c *gin.Context) {
//获取浏览器那边发请求携带的query string 参数
name := c.Query("query")
age := c.Query("age") // 通过Query获取请求中携带的querysrting参数
// name := c.DefaultQuery("query","somebody") // 娶不到就用指定的默认值
// name, ok := c.GetQuery("query") //取不到第二个参数就返回false
// if !ok {
// //取不到
// name = "somebody"
// }
c.JSON(http.StatusOK, gin.H{
"name": name,
"age": age,
})
})
r.Run(":9090")
}
gin获取form参数
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
//获取from表单提交的参数
func main() {
r := gin.Default()
r.LoadHTMLFiles("./login.html", "./index.html")
r.GET("/login", func(c *gin.Context) {
c.HTML(http.StatusOK, "login.html", nil)
})
r.POST("login", func(c *gin.Context) {
//这两行代码使用 gin.Context 的 PostForm 方法从 POST 请求的表单数据中
//获取 username 和 password 字段的值。如果表单中没有这些字段,
//那么 username 和 password 将会是空字符串。
username := c.PostForm("username")
password := c.PostForm("password")
//渲染 HTML 响应:
//这里,c.HTML 方法用于渲染一个 HTML 响应。它接受三个参数:
//第一个参数是 HTTP 状态码,这里使用了 `http.StatusOK`,即 200。
//第二个参数是 HTML 模板的名称,这里是 `"index.html"`。这意味着 gin 会查找一个名为 `index.html` 的模板文件来渲染。
//第三个参数是一个 `gin.H` 类型的 map,它包含了要传递给模板的数据。在这个例子中,模板会接收到两个变量:`Name` 和 `Password`,它们的值分别是 `username` 和 `password`。
c.HTML(http.StatusOK, "index.html", gin.H{
"Name": username,
"Password": password,
})
})
r.Run(":9090")
//这里,r 是一个 gin.Engine 的实例,它用于定义路由和它们的处理器。
//POST("login", ...) 定义了一个处理 /login 路径的 POST 请求的路由。
//当有一个 POST 请求发送到 /login 时,会执行提供的匿名函数。
}
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>login</title>
</head>
<body>
<form action="/login" method="post" novalidate autocomplete="off">
//action="/login": 这定义了表单数据提交到的URL路径。
//method="post": 这指定了HTTP请求方法为POST,意味着表单数据将通过POST请求发送到服务器。
//novalidate: 这告诉浏览器不要对表单进行自动验证。
//autocomplete="off": 这尝试阻止浏览器自动完成表单字段,但这并不总是有效的,因为它取决于浏览器的实现和用户设置。
<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="" username>
</div>
<input type="submit" value="登录">
//type="submit": 这定义了输入类型为提交按钮。
//当用户点击此按钮时,表单数据将被发送到由 action 属性指定的URL。
</form>
</body>
</html>
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>index</title>
</head>
<body>
<h1>Hello,{{ .Name }}</h1>
<p>你的密码是:{{ .Password}}</p>
</body>
</html>
gin获取url路径参数
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
//获取from表单提交的参数
func main() {
r := gin.Default()
r.GET("user/:name/:age", func(c *gin.Context) { 要加上user,不然会出现路由不匹配,导致识别到下面的路由
//获取路径参数
name := c.Param("name")
age := c.Param("age")
c.JSON(http.StatusOK, gin.H{
"name": name,
"age": age,
})
})
r.GET("/blog/:year/:month", func(c *gin.Context) {
year := c.Param("year")
month := c.Param("month")
c.JSON(http.StatusOK, gin.H{
"year": year,
"month": month,
})
})
r.Run(":9090")
}