golang獲取用戶輸入的幾種方式
一、定義結(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請求的Query方法
func getBindUser(c *gin.Context) {
//query用來獲取用戶輸入的參數(shù)
name := c.Query("name")
//用來轉(zhuǎn)換用戶輸入的參數(shù)為數(shù)字
age, _ := strconv.Atoi(c.Query("age"))
//用來獲取用戶輸入的參數(shù),并設(shè)置默認值為 "上海"
add := c.DefaultQuery("add", "上海")
//結(jié)構(gòu)體實例化后與用戶輸入?yún)?shù)綁定
userinfo := UserInfo{
Name: name,
Age: age,
Add: add,
}
//結(jié)構(gòu)體實例化并接收用戶輸入的參數(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請求
1.獲取用戶輸入?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方式,只是通過用戶輸入任意字符來判斷是否帶有token用來做個測試這個功能的安全是否成功
func glbloTokenIsNo(c *gin.Context) {
//這塊兒是用戶輸入的任意字符當(dāng)做token,腳本架部分會用到j(luò)wt
token := c.Query("token")
//這塊兒會判斷是否為空串,字符串要用空串判斷,數(shù)字才可以用!=nil判斷
if token == "" {
returnData := ReturnData{
Message: "獲取token失敗!",
Status: "401",
}
c.JSON(http.StatusOK, returnData)
}
c.String(200, "登錄成功!")
}
五、路由分組
注:開始不懂為什么要分組,后來明白了,分組主不是用來管理路由,比如:你的訪問url特別長,像/api/user/addUser/和/api/user/deleteUser這兩個就可以將/api/app分為一組
apiGroup := r.Group("/api/user")
使用的時候就可以寫成如下這樣
//這樣apiGroup就代表/api/user了
apiGroup.POST("/addUser", returnDataBindUser)
以上就是golang獲取用戶輸入的幾種方式的詳細內(nèi)容,更多關(guān)于golang獲取用戶輸入的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用golang獲取linux上文件的訪問/創(chuàng)建/修改時間
這篇文章主要介紹了使用golang獲取linux上文件的訪問/創(chuàng)建/修改時間,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08
go語言中的數(shù)組指針和指針數(shù)組的區(qū)別小結(jié)
本文主要介紹了go語言中的數(shù)組指針和指針數(shù)組的區(qū)別小結(jié),文中通過示例代碼介紹的很詳細,具有一定的參考價值,感興趣的可以了解一下2024-10-10
Go底層之string和[]byte相互轉(zhuǎn)換原理分析
這篇文章主要介紹了Go底層之string和[]byte相互轉(zhuǎn)換原理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-06-06
Go語言性能監(jiān)控和調(diào)優(yōu)的工具和方法
本文介紹了Go語言性能監(jiān)控和調(diào)優(yōu)的工具和方法,包括?pprof、expvar?和?trace?等工具的使用方法和注意事項,以及性能調(diào)優(yōu)的一些常見方法,如減少內(nèi)存分配、避免頻繁的垃圾回收、避免過度查詢數(shù)據(jù)庫等,針對不同的程序,應(yīng)該根據(jù)實際情況采用不同的優(yōu)化方法2024-01-01

