Beego处理
- 不得不吐槽,一个参数处理搞得这么复杂,太难受了。
依赖包
- beego
- encoding/json
配置文件
- 一定要配置,不然找不到,不然的话RequestBody 就是空的
- 在启动服务的地方,建一个文件夹conf,放上一个app.conf
- 注意: 这个文件路径是固定的,服务启动的时候会自动识别,自己注意检查路径是不是对的
- 在app.conf 中加上下面一段话
copyrequestbody = true
- 检查是否配上了,在处理的函数中,打印 beego.AppConfig.String(“copyrequestbody”) ,看看是不是true
定义一个参数对象
type XXX struct{
Cmd string `json:"cmd"`
}
- 注意:XXX 要大写, Cmd 要大写,后面的json 要跟你参数一模一样
解析
func xxx(c *context.Context) {
var x XXX
json.Unmarshal(c.Input.RequestBody, &x)
fmt.Println(x)
c.WriteString("done")
}
- 注意: 这里的c 就是 Controller 写法里的 c.Ctx
- 如果没有解析出来,请检查配置文件有没有,RequestBody是不是空的,定义的对象规则是不是对的
- 或者设置
beego.BConfig.CopyRequestBody = true
web.BConfig.CopyRequestBody = true
完整代码
package main
import (
"encoding/json"
"fmt"
"github.com/astaxie/beego"
"github.com/astaxie/beego/context"
)
type XXX struct{
Cmd string `json:"cmd"`
}
func xxx(c *context.Context) {
var x XXX
// 一定要配置 copyrequestbody = true 不然 为空
json.Unmarshal(c.Input.RequestBody, &x)
fmt.Println(x)
c.WriteString("done")
}
func main() {
beego.Post("/", xxx)
beego.Run("0.0.0.0:1111")
}