golang获取用户输入的几种方式
作者:余生逆风飞翔
这篇文章给大家介绍了golang获取用户输入的几种方式,文中通过代码示例给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友跟着小编一起来学习吧
一、定义结构体
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用来获取用户输入的参数 name := c.Query("name") //用来转换用户输入的参数为数字 age, _ := strconv.Atoi(c.Query("age")) //用来获取用户输入的参数,并设置默认值为 "上海" add := c.DefaultQuery("add", "上海") //结构体实例化后与用户输入参数绑定 userinfo := UserInfo{ Name: name, Age: age, Add: add, } //结构体实例化并接收用户输入的参数进行绑定,实例化有两种方式,下面注释的算一种,未注释的是另一种 // 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.获取用户输入参数的方法,并直接绑定到json格式
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("参数传递失败。。。", err.Error()) } else { c.JSON(http.StatusOK, userInfo) fmt.Printf("姓名:%s\n年龄:%d\n地址:%s\n", userInfo.Name, userInfo.Age, userInfo.Add) } }
2.第二种方式就是用formdata,此函数用from-data方式获取
四、设置token获取
这儿设置一下token的获取,并为用jwt方式,只是通过用户输入任意字符来判断是否带有token用来做个测试这个功能的安全是否成功
func glbloTokenIsNo(c *gin.Context) { //这块儿是用户输入的任意字符当做token,脚本架部分会用到jwt token := c.Query("token") //这块儿会判断是否为空串,字符串要用空串判断,数字才可以用!=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获取用户输入的几种方式的详细内容,更多关于golang获取用户输入的资料请关注脚本之家其它相关文章!