golang獲取用戶(hù)輸入的幾種方式
一、定義結(jié)構(gòu)體
type UserInfo struct {
Name string `json:"name"`
Age int `json:"age"`
Add string `json:"add"`
}
type ReturnData struct {
Message string `json:"message"`
Status string `json:"status"`
Data UserInfo `json:"data"`
}
二、get請(qǐng)求的Query方法
func getBindUser(c *gin.Context) {
//query用來(lái)獲取用戶(hù)輸入的參數(shù)
name := c.Query("name")
//用來(lái)轉(zhuǎn)換用戶(hù)輸入的參數(shù)為數(shù)字
age, _ := strconv.Atoi(c.Query("age"))
//用來(lái)獲取用戶(hù)輸入的參數(shù),并設(shè)置默認(rèn)值為 "上海"
add := c.DefaultQuery("add", "上海")
//結(jié)構(gòu)體實(shí)例化后與用戶(hù)輸入?yún)?shù)綁定
userinfo := UserInfo{
Name: name,
Age: age,
Add: add,
}
//結(jié)構(gòu)體實(shí)例化并接收用戶(hù)輸入的參數(shù)進(jìn)行綁定,實(shí)例化有兩種方式,下面注釋的算一種,未注釋的是另一種
// returnData := make(map[string]interface{})
returnData := ReturnData{}
returnData.Message = "加載配置成功!"
returnData.Status = "200"
returnData.Data = userinfo
c.JSON(http.StatusOK, returnData)
fmt.Println(returnData)
}
三、post請(qǐng)求
1.獲取用戶(hù)輸入?yún)?shù)的方法,并直接綁定到j(luò)son格式
func returnDataBindUser(c *gin.Context) {
userInfo := UserInfo{}
if err := c.ShouldBindJSON(&userInfo); err != nil {
c.JSON(http.StatusOK, gin.H{
"messages": "加載配置失?。?,
"status": 500,
})
fmt.Println("參數(shù)傳遞失敗。。。", err.Error())
} else {
c.JSON(http.StatusOK, userInfo)
fmt.Printf("姓名:%s\n年齡:%d\n地址:%s\n", userInfo.Name, userInfo.Age, userInfo.Add)
}
}
2.第二種方式就是用formdata,此函數(shù)用from-data方式獲取
四、設(shè)置token獲取
這兒設(shè)置一下token的獲取,并為用jwt方式,只是通過(guò)用戶(hù)輸入任意字符來(lái)判斷是否帶有token用來(lái)做個(gè)測(cè)試這個(gè)功能的安全是否成功
func glbloTokenIsNo(c *gin.Context) {
//這塊兒是用戶(hù)輸入的任意字符當(dāng)做token,腳本架部分會(huì)用到j(luò)wt
token := c.Query("token")
//這塊兒會(huì)判斷是否為空串,字符串要用空串判斷,數(shù)字才可以用!=nil判斷
if token == "" {
returnData := ReturnData{
Message: "獲取token失??!",
Status: "401",
}
c.JSON(http.StatusOK, returnData)
}
c.String(200, "登錄成功!")
}
五、路由分組
注:開(kāi)始不懂為什么要分組,后來(lái)明白了,分組主不是用來(lái)管理路由,比如:你的訪問(wèn)url特別長(zhǎng),像/api/user/addUser/和/api/user/deleteUser這兩個(gè)就可以將/api/app分為一組
apiGroup := r.Group("/api/user")
使用的時(shí)候就可以寫(xiě)成如下這樣
//這樣apiGroup就代表/api/user了
apiGroup.POST("/addUser", returnDataBindUser)
以上就是golang獲取用戶(hù)輸入的幾種方式的詳細(xì)內(nèi)容,更多關(guān)于golang獲取用戶(hù)輸入的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Go如何在HTTP請(qǐng)求中操作cookie教程詳解
這篇文章主要為大家介紹了Go如何在HTTP請(qǐng)求中操作cookie教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
???????Golang實(shí)現(xiàn)RabbitMQ中死信隊(duì)列幾種情況
本文主要介紹了???????Golang實(shí)現(xiàn)RabbitMQ中死信隊(duì)列幾種情況,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Golang channle管道的基本使用及快速入門(mén)
管道是Go語(yǔ)言中實(shí)現(xiàn)并發(fā)的一種方式,它可以在多個(gè)goroutine之間進(jìn)行通信和數(shù)據(jù)交換,本文主要介紹了Golang channle管道的基本使用及快速入門(mén),具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12

