https://www.cnblogs.com/Paul-watermelon/articles/11033010.html
我们经常需要获取用户传递的数据,包括Get、POST 等方式的请求,beego里面会自动解析这些数据,你可以通过如下方式获取数据:
如果是get请求,我们可以通过url来传递参数,那么可以通过以上方法进行获取
新建一个go文件testinput.go,用于创建一个Controller:
package controllers import ( "github.com/astaxie/beego" ) type TestInputController struct { beego.Controller } func (c *TestInputController) TestInputGet() { id := c.GetString("id") c.Ctx.WriteString(id) }
接下来修改router.go中的init()方法:
func init() { beego.Router("/", &controllers.MainController{},"get:Get;post:Post") beego.Router("/test", &controllers.TestController{},"get:TestGet;post:TestPost") beego.Router("/testinput", &controllers.TestInputController{},"get:TestInputGet") }
重启项目,并在浏览器中输入网址以及传递参数:
也可以通过Input()方法,也可以获取数据
修改TestInputGet()方法如下:
func (c *TestInputController) TestInputGet() { name := c.GetString("name") c.Ctx.WriteString("<html>"+name+"<br/>") idstr:=c.Input().Get("id") c.Ctx.WriteString(idstr+"</html>") id,_:=strconv.Atoi(idstr) fmt.Println(id) }
然后重启项目,并打开浏览器输入以下内容:http://127.0.0.1:9527/testinput?id=1024&name=hanru
浏览器运行结果如下:
通过ParseForm()方法,可以直接映射一个结构体对象,修改TestInputGet()方法如下:
func (c *TestInputController) TestInputGet() { c.Ctx.WriteString(`<html><form action="http://127.0.0.1:9527/testinput" method="post"> 用户名:<input type ="text" name="Username" /> <br/> 密   码:<input type="password" name="pwd"> <br/> <input type="submit" value="提交"> </form></html>`) }
创建一个struct:
type User struct { Username string //对应表单中的name值,字段名首字母也必须大写,否则无法解析该参数的值 Password string `form:"pwd"` //也可以指定form表单中对应的name值,如果不写将无法解析该参数的值 }
Controller 里解析,添加TestInputPost()方法:
func (c *TestInputController) TestInputPost() { u := User{} if err := c.ParseForm(&u); err != nil { log.Panic(err) } c.Ctx.WriteString("Username:" + u.Username + ",Password:" + u.Password) }
修改注册路由的init()方法:
func init() { beego.Router("/", &controllers.MainController{},"get:Get;post:Post") beego.Router("/test", &controllers.TestController{},"get:TestGet;post:TestPost") beego.Router("/testinput", &controllers.TestInputController{},"get:TestInputGet;post:TestInputPost") }
重启项目,并打开浏览器输入:http://127.0.0.1:9527/testinput
通过get方法的访问,我们向页面写出了一个form表单,然后填写用户名和密码,并点击提交按钮。
浏览器运行结果如下:
通过post方法的访问,我们向页面写出来了读到的用户名和密码。
注意:
在 API 的开发中,我们经常会用到 JSON 或 XML 来作为数据交互的格式,如何在 beego 中获取 Request Body 里的 JSON 或 XML 的数据呢?
func (this *ObejctController) Post() { var ob models.Object json.Unmarshal(this.Ctx.Input.RequestBody, &ob) objectid := models.AddOne(ob) this.Data["json"] = "{\"ObjectId\":\"" + objectid + "\"}" this.ServeJson() }
如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术
转载请注明:Beego处理http请求数据 出自老鄢博客 | 欢迎分享