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

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

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

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

第二种:

  • this.GetString(key string) string
  • this.GetStrings(key string) []string
  • this.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值,如果不写将无法解析该参数的值
}

前端数据表单 :

<form id="user">

    名字:<input name="username" type="text" />

    年龄:<input name="age" type="text" />

    邮箱:<input name="email" type="text" />

    <input type="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对象

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

php、go编程学习实例

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值