普拉多VX

人生一路,不问来时,不知归期

0%

Gin web开发系列(四)

获取GET参数

获取参数

使用Query()方法,如果没有name查询关键字,那就为空。

1
2
3
4
5
6
7
8
r.GET("/server",func(c *gin.Context){

queryName := c.Query("name")

c.HTML(http.StatusOK,"server",gin.H{
"name":queryName,
})
})

默认参数

使用DefaultQuery,如果没获取到name默认值就为”default”

1
2
3
4
5
6
7
8
9
10
r.GET("/server",func(c *gin.Context){

queryName := c.DefaultQuery("name","default")
queryAge := c.DefaultQuery("age","18")

c.HTML(http.StatusOK,"server",gin.H{
"name":queryName,
"age":queryAge,
})
})

判断请求参数
使用GetQuery()方法判断是否有该参数,返回两个值,一个是值,另一个是状态。

1
2
3
4
5
6

query,ok := c.GetQuery("queryName")

if ok == false{
query = "123"
}

源码

1
2
3
4
5
6
7

func (c *Context) GetQuery(key string) (string, bool) {
if values, ok := c.GetQueryArray(key); ok {
return values[0], ok
}
return "", false
}

url请求

1
http://127.0.0.1:8001/server?name=roddy&age=29

获取form表单参数

PostForm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
r.GET("/login",func(c *gin.Context){

c.HTML(http.StatusOK,"login",nil)
})

r.POST("/login",func(c *gin.Context){

username := c.PostForm("username")
password := c.PostForm("password")


c.HTML(http.StatusOK,"server",gin.H{
"username":username,
"password":password,
})
})
1
2
3
4
5
6
7
8
9
10
{{ template "base"}} 

{{ define "content"}}
<form action="/login" method="post">
<input value="" type="text" name="username" /><br>
<input value="" type="password" name="password" /><br>
<input type="submit" value="提交">

</form>
{{end}}

DefaultPostForm

如果获取不到key,设置默认值

1
2
username := c.DefaultPostForm("username1","roddy")
password := c.DefaultPostForm("password1","pass")

GetPostForm
如果没有获取到值,那设置一个默认值

其中GetPostForm判断的三种状态

  • 1.如果有key并且有值 返回值和true
  • 2.如果有key没值,返回空和true
  • 3.如果没key没值,返回空和false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

// For example, during a PATCH request to update the user's email:
// email=mail@example.com --> ("mail@example.com", true) := GetPostForm("email") // set email to "mail@example.com"
// email= --> ("", true) := GetPostForm("email") // set email to ""
// --> ("", false) := GetPostForm("email") // do nothing with email

r.POST("/login",func(c *gin.Context){

username,ok := c.GetPostForm("username")
if username == ""{
username="rrr"
}

password,ok := c.GetPostForm("password")

fmt.Println(username,password,ok)
if password==""{
password="xxxxx"
}

fmt.Println(username,password)
c.HTML(http.StatusOK,"server",gin.H{
"username":username,
"password":password,
})
})