在日常的Api开发中,我们经常会使用Json来作为数据交互的方式,特别是前后端分离后
此时,如何在beego中获取 Request Body 的内容呢?
官方配置
1、在配置文件中添加 copyrequestbody = true
2、在controller 使用this.Ctx.Input.RequestBody获取Body数据, 然后利用json.Unmarshal 解析 Request Body的数据
func (this *ObjectController) Post() {
var ob models.Object
var err error
if err = json.Unmarshal(this.Ctx.Input.RequestBody, &ob); err == nil {
objectid := models.AddOne(ob)
this.Data[“json”] = “{“ObjectId”:”" + objectid + “”}"
} else {
this.Data[“json”] = err.Error()
}
this.ServeJSON()
}
但在开发中这样确实没有问题,但编译部署之后会出现 Error: unexpected end of JSON input
2、解决方法 原理1、beego 默认的参数配置文件 conf/app.conf (不区分大小写)
beego 会将配置参数写入 beego.BConfig 中, 实现参数配置化
[app.conf]
设置app名称
appname = Hello_World
[beego.BConfig]
beego.BConfig.AppName = Hello_World
2、当设置的配置参数无效的时候,我们可以手动设置未生效的配置参数
实现我们在main包中, 添加初始化 init 函数, 并将失效配置写入其中
package main
import (
"
"github.com/astaxie/beego"
)
func init() {
beego.BConfig.CopyRequestBody = true
}
func main() {
beego.Run()
}
3、参考
Beego>controller >参数配置