抖音项目实践 | 青训营

138 阅读2分钟

字节青训营抖音大项目实践主要用到了GIN 和 GORM进行路由管理和数据库操作。由于给出的demo中有了初始化一些代码,所以只需要从配置开始即可。

安装

安装 gin

go get -u github.com/gin-gonic/gin

项目整体架构,是go语言的http服务架构,可以进行路由绑定如router.GET("/", index)表示用GET方式接收路由,如果路由是根目录,那么直接执行index控制器方法,index控制器必须含有gin.Context参数,也可以向上面一样将index控制器的内容写成匿名函数。

除了基本路由外还支持路由组、异步调用等功能、

安装 gorm

go get -u gorm.io/gorm

用来连接数据库,并进行数据库增删改查的操作。

安装 ini 解析包

go get -u gopkg.in/ini.v1

用来解析config.ini的配置文件。

配置

配置文件 config.ini

在项目根目录下新建config文件,config下创建config.ini配置文件 存放连接数据库的配置信息如host、username、password等; 存放项目配置信息如端口等; 存放redis配置信息等;

[app]
Port=8080

[mysql]
db_name = ""   # 数据库名字
db_user = ""  # 用户名
db_pwd = ""   # 密码
db_host = "127.0.0.1"
db_port = 3306
db_charset = "utf8"

配置读取文件

在config文件夹下创建conf.go文件用来读取ini配置文件并将其放在Config结构体中,以便后续调用。

type Config struct {
   Port  string
   MySql Mysql
}

数据库

数据库结构体

type Mysql struct {
   DbUser    string `json:db_user`
   DbName    string `json:db_name`
   DbPwd     string `json:db_pwd`
   DbHost    string `json:db_host`
   DbPort    string `json:db_port`
   DbCharset string `json:db_charset`
}

初始化连接数据库

dataSource := Config.MySql.DbUser + ":" + Config.MySql.DbPwd + "@tcp(" + Config.MySql.DbHost + ":" + Config.MySql.DbPort + ")/" + Config.MySql.DbName + "?charset=" + Config.MySql.DbCharset + "&parseTime=true"
DB, err := gorm.Open(mysql.Open(dataSource), &gorm.Config{
   PrepareStmt:            true, //缓存预编译命令
   SkipDefaultTransaction: true, //禁用默认事务操作
})
if err != nil {
   log.Fatalf("Fail to connect DB: %v", err)
}

// 数据库表动态迁移
DB.AutoMigrate(&model.User{})

在连接数据库时可以选择数据库的类型,上面代码中选择的是mysql,所以需要提前安装gorm.io/driver/mysql驱动,然后在gorm.Config中进行一些配置。

然后gorm有数据迁移的功能,可以使用AutoMigrate建立对应的数据库表,只需要在定义User结构体的时候使用 gorm:"column:id"进行标识对应数据表列的名字。