1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > beego框架下获取用户get\post数据的常见方法

beego框架下获取用户get\post数据的常见方法

时间:2019-10-06 09:40:19

相关推荐

beego框架下获取用户get\post数据的常见方法

获取用户传递的数据,包括 Get、POST 等方式的请求,beego 里面会自动解析这些数据,你可以通过如下方式获取数据:

第一种:this.Input().Get("key"),如获取前端ID:

this.Input().Get("id")

第二种:

this.GetString(key string) stringthis.GetStrings(key string) []stringthis.GetInt(key string) (int64, error)this.GetBool(key string) (bool, error)this.GetFloat(key string) (float64, error)

如获取前端传来的ID:

this.GetString("id")

而this.GetString("id")方法实际上只是多了一个类型转换的操作,源码如下:

func (c *Controller) GetInt(key string, def ...int) (int, error) {strv := c.Ctx.Input.Query(key)if len(strv) == 0 && len(def) > 0 {return def[0], nil}return strconv.Atoi(strv) //就多了这一个转换}

第三种:直接解析到 struct:

定义struct:

type user struct {Id int `form:"-"`Name interface{} `form:"username"` //对应表单中的name值,字段名首字母也必须大写,否则无法解析该参数的值Age int `form:"age"` //对应表单中的name值,如果不写将无法解析该参数的值Email string`form:"email"` //对应表单中的name值,如果不写将无法解析该参数的值}

前端数据表单 :

<formid="user">名字:<inputname="username" type="text" />年龄:<inputname="age" type="text" />邮箱:<inputname="email" type="text" /><inputtype="submit" value="提交" /></form>

Controller 里解析:

func (this *MainController) Post() {u := user{}if err := this.ParseForm(&u); err != nil {//handle error}}

注意:

StructTag form 的定义和​renderform方法​共用一个标签定义 struct 时,字段名后如果有 form 这个 tag,则会以把 form 表单里的 name 和 tag 的名称一样的字段赋值给这个字段,否则就会把 form 表单里与字段名一样的表单内容赋值给这个字段。如上面例子中,会把表单中的 username 和 age 分别赋值给 user 里的 Name 和 Age 字段,而 Email 里的内容则会赋给 Email 这个字段。调用 Controller ParseForm 这个方法的时候,传入的参数必须为一个 struct 的指针,否则对 struct 的赋值不会成功并返回xx must be a struct pointer的错误。如果要忽略一个字段,有两种办法,一是:字段名小写开头,二是:form标签的值设置为-上文方法前页的this对象,来源于方法的struct对象

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。