今天我们来讲述其中各个文件的配置。这是每一个项目都必不可少的基础业务,也是我们使用框架的起点。只有配置好了文件,我们才能成功调用接口。本文阅读需要一定的数据库基础。
项目的后端分层
在完成工程的时候,我们需要注意项目工程的分层。大体项目的后端应该分为三层:Entity(实体)、Service(服务层)、Controller(控制层)。
一个项目的整体工程安排可以如图所示,我们在进行查询之前,理应配置好其它环境,在这方面我建议是去找开源代码,在此处就不多加赘述了,仅仅简单提一下每一个文件的需要:
| 层名 | 作用 |
|---|---|
| Controller | 控制层,决定业务逻辑以及在其中的属性传递方式 |
| Service | 利用函数生成对应的SQL语句,和数据库相连后执行命令。 |
| Public | 一些数据 |
| Test | 测试文件,里面含有单元测试等测试所用代码。 |
| .mod | 引入的各种框架代码版本 |
| .sum | 引入的所有框架代码 |
| router | 每一个执行接口的路径和方法 |
| main | 主程序,在这里启动数据库的连接 |
方式
不管是增删改查当中的哪一个,前提都是,我们要在数据库中建立一个表。好在go语言为我们提供了建立表格的方式。
设定Entity类
那么,这个表有几列?这些列的约束是什么?有没有主键?这些问题都是我们逃避不开的选项。 设定这些的关键就在于设定实体类(Entity)。 假设我们现在要给一个视频做评论,那么这个表格需要哪些内容?
- 评论id,这也要作为主键
- 发布这个评论的用户
- 这条评论所在的视频
- 这条评论的具体内容
- 这条评论发布的时间
大家可以看看下面的代码,它表示这一评论类的定义:
package Entity
type CommentEntity struct {
CommentId string `gorm:"primaryKey"`
UserId int
VideoId int
Content string
Calendar string
}
生成数据库表
我们可以看到,这个结构体很容易就表现出来了,下面是建立表格的时刻,也是gorm发挥作用的时候:
package CommentDbService
var Db *gorm.DB
func ConnectDb() {
var (
err error
)
dbConfig := ConfigService.GetAppConfig("database")
connectStr := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8&parseTime=True&loc=Local", dbConfig.USER,
dbConfig.PASSWORD,
dbConfig.HOST, dbConfig.NAME)
Db, err = gorm.Open(mysql.Open(connectStr), &gorm.Config{})
if err != nil {
panic(err)
}
// 自动生成表结构
dbErr1 := Db.AutoMigrate(&Entity.CommentEntity{})
if dbErr1 != nil {
println(err)
}
}
连接数据库
我们知道,连接数据库需要用户名(身份,最好不要是root)、密码、具体哪个数据库等信息,这些信息我们可以在.ini文件中定义:
#客户端访问服务端所用到的端口号
[server]
HTTP_PORT = :9180
[database]
#数据库种类
TYPE = mysql
#用户名
USER = yrb
#密码
PASSWORD =yrb
#localhost:3306 数据库IP:数据库端口号
HOST = localhost:3306
#数据库名称
NAME = go
运行
这样,再在main函数中调用并运行:
CommentDBService.ConnectDb()
我们就会发现数据库中多了一个表:
考虑响应成功后传递的信息
根据我们相应的要求不同,传递的信息也有所不同。这里用到了gin框架: 比如:
// 参数错误响应
func ArgErrApiResult(c *gin.Context, argName string) {
c.JSON(SUCCESS, &ResponseResult{
Result: false,
Msg: fmt.Sprintf("参数【%s】有误", argName),
Code: SUCCESS,
Data: nil,
})
}
此处可以不做赘述。