初衷:
文章中出现的内容均是叶叶开始GO的接口学习遇到的问题,会持续不断更新。
前面:
- Go
- 又称Golang
- 是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言
- beego
- 一个快速开发GO应用的HTTP框架
- 可以用来快速开发API、Web及后端服务等各种应用,是一个RESTful的框架
- REST(英文:Representational State Transfer,简称REST)指的是一组架构约束条件和原则。
- 满足这些约束条件和原则的应用程序或设计就是 RESTful。
开始:
1.panic: 'getUserInfoById' method doesn't exist in the controller UserController(2019-04-09)
报错图片:
解决方法: 将方法名的首字母改为大写!大写!大写!在go当中,首字母小写包内调用,如果想要包外调用需要首字母大写,go中没有private与public的概念。同一个包内的文件可以看成是一个文件,小写的话就是private,如果在不同的包内,需要首字母大写,相当于java、php中的public属性。
2.查询数据库(2019-04-10)
目前自己学习到的是两种查询数据库的方法:
- 原生SQL查询
- 原生 SQL 查询
- 这里可以自定义返回指定filed值
- 这种方式可以正确查询
- [code]:
type MyUser struct {
Id int `json:"id"`
Name string `json:"name"`
}
...
uid, _ := strconv.Atoi(this.Ctx.Request.Header.Get("uid"))
o := orm.NewOrm() // 创建一个 Ormer
var myuserinfo MyUser
o.Raw("SELECT id, name FROM users WHERE id = ?", uid).QueryRow(&myuserinfo)
...
复制代码
- beego/ORM查询
- ORM 使用方法
这里自定义返回指定filed值,一直再报错,有待自己再研究- 下面查询方式不报错
- [code]:
1.在models中自动生成对应文件;
2.
uid, _ := strconv.Atoi(this.Ctx.Request.Header.Get("uid"))
o := orm.NewOrm() // 创建一个 Ormer
// 获取 QuerySeter 对象,users 为表名
var myuserinfo models.Users
o.QueryTable("users").Filter("id", uid).One(&myuserinfo)
复制代码
后来:
研究结果:
有大神同事建议:指定字段返回的,就使用原生SQL查询。如果业务逻辑复杂就用sql 简单的就直接orm。