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實現(xiàn)RabbitMQ中死信隊列幾種情況
本文主要介紹了???????Golang實現(xiàn)RabbitMQ中死信隊列幾種情況,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03