golang

基于beego框架的go项目目录结构

月盾
原生的go推荐目录是 ├─bin ├─pkg ├─src bin目录放二进制文件,可以是编译后的可执行文件,也可以是安装的第三方命令行,比如beego的命令行工具会安装在bin目录。pkg存放第三方依赖,src存放代码文件。单个项目没什么疑问,就这么存放,主要是有多个项目的时候对新手来说会有点迷糊,就像我,建立了两个项目就像进了迷宫,提交到git上就更乱了,究其原因是把bin目录和pkg目录当做项目源码的一部分了。其实这两个目录是作为公共目录存在的,多个项目公用。src目录下也是可以有多个项目的,每个项目有自己独立的文件夹。 .src\ ├─project1 ├─project2 ├─project3 所以在创建项目和克隆代码时都是在src目录下进行,不能把bin目录和pkg目录提交到git上。 但是beego并没有完全遵循这一原则,它将二进制文件直接编译到了项目源码目录下,或许可配置生成目录,暂时没有了解到,所以需要在.gitignore中排除掉生成的可执行文件,否则提交的时候就比较费时了。

beego post请求获取request body参数

月盾
为了获取json类型的参数煞费苦心,差点不再爱了。 前端请求代码: $.ajax({ url: "/user", type: "post", contentType: 'application/json', data: JSON.stringify({username:"张三",mobile:"13265478965"}), //这才是最重要的地方,必须用JSON.stringify序列化成字符串, //直接使用对象死活都接收不到,至于大小写并不影响,只要写对了就行 dataType: "json" }).done(function(res) { if(res.result){ alert("成功") } }); 需要传输json类型数据,同时数据需要使用JSON.stringify序列化。 后端接收代码: func (c *UserController) Post() { var form struct { Username string `json:"username"` Mobile string `json:"mobile"` } c.BindJSON(&form) user := &User{Username: form.UserName, Mobile: form.Mobile} err := user.AddUser()//这是添加用户函数 if nil != err { c.Data["json"] = map[string]interface{}{"result": false, "msg": err} } else { c.Data["json"] = map[string]interface{}{"result": true, "msg": "新增成功"} } c.