一架梯子,一头程序猿,仰望星空!
Beego 框架面试题 > 内容正文

Beego 中怎么读取 GET 和 POST 参数?


问题简答

在 Beego 的Controller方法中,可以使用 this.GetString、this.GetStrings、this.GetInt、this.GetFloat、this.GetBool 等方法获取 GET 或 POST 请求中的参数,也可以使用 this.Ctx.Input.RequestBody 获取 POST 请求中的原始请求体数据。

问题详解:

Beego处理请求参数有下面几种方式:

  • 通过内置方法GetString、GetInt等直接读取指定字段的参数
  • 通过ParseForm方法,把请求参数绑定到一个struct对象
  • 如果请求参数是json格式,需要通过this.Ctx.Input.RequestBody获取请求的json字符串,然后使用Unmarshal对json进行反序列化。

例子:

package controllers

import (
    "encoding/json"
    "github.com/astaxie/beego"
)

type UserController struct {
    beego.Controller
}

// 处理 GET 请求
func (c *UserController) Get() {
    userId := this.GetString("userId")
    username := this.GetString("username")
    c.Data["json"] = map[string]string{"userId": userId, "username": username}
    c.ServeJSON()
}

// 处理 POST 请求
func (c *UserController) Post() {
    var user struct {
        UserId   string `json:"userId"`
        UserName string `json:"userName"`
    }
    // 处理son请求参数
    err := json.Unmarshal(c.Ctx.Input.RequestBody, &user)
    if err != nil {
        // 处理错误
    }
    c.Data["json"] = map[string]string{"userId": user.UserId, "username": user.UserName}
    c.ServeJSON()
}

详情请参考:beego处理请求参数