后端基础day15-极简版抖音|青训营笔记

199 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第15天。本篇为第五届字节跳动青训营-寒假专场-后端基础班大项目“极简版抖音”的相关分析内容。

项目要求

已有前端app的情况下,根据提示设置好地址即可使用。windows用户可使用安卓模拟器,使用10.0.2.2地址,即可访问本机服务器。

本次大项目“极简版抖音”的完成思路分为:前端设置(按照提示),连接数据库,根据给定的接口文档完成相关接口。

数据库连接

需要安装mysql,mysql可视化操作可使用workbench或者navicat。首先要在本地建立数据库,确保知道本地数据库的账号密码。相关操作不再赘述。

本地数据库建立后,首先进行数据库连接。使用gorm框架即可完成,如下所示。

// 获取配置参数数据
func (c *conf) getConf() *conf {
	//读取resources/application.yaml文件
	yamlFile, err := os.ReadFile("resources/application.yaml")
	//若出现错误,打印错误提示
	if err != nil {
		fmt.Println(err.Error())
	}
	//将读取的字符串转换成结构体conf
	err = yaml.Unmarshal(yamlFile, c)
	if err != nil {
		fmt.Println(err.Error())
	}
	return c
}

// 初始化连接数据库,生成可操作基本增删改查结构的变量
func InitMySql() (err error) {
	var c conf
	//获取yaml配置参数
	conf := c.getConf()
	//将yaml配置参数拼接成连接数据库的url
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
		conf.UserName,
		conf.Password,
		conf.Url,
		conf.Port,
		conf.DbName,
	)
	//连接数据库
	SqlSession, err = gorm.Open(DRIVER, dsn)
	if err != nil {
		panic(err)
	}
	//验证数据库连接是否成功,若成功,则无异常
	return SqlSession.DB().Ping()
}

// 关闭数据库连接
func Close() {
	SqlSession.Close()
}

数据库相关的配置存储在application.yaml文件中。

可对项目整体结构分层,controller(路由控制器)、service(控制器所采用的相关服务,一般涉及数据库操作等)、entity/model(数据库建表)、dao(数据库连接)、middleware(中间件)。

使用dao.SqlSession.AutoMigrate(&entity.User{})即可完成users表的创建。

接口

相关接口的编写,根据接口文档来写即可,基本都是数据库的curd操作。

本地文件存储

在投稿接口中,因为前端没有发送含“图片/封面”文件的请求,因此需要从视频中截取封面,需要用到FFmpeg库,windows用户使用这个可能会需要管理员模式启动goland或vscode。按照正常情况,应该不会由后端去处理封面,而是前端给用户提供自定义封面的选择。

其次是本地文件的存储地址,实际的物理地址是“项目目录/public/”,但在存储playurl时需要设置为static,这在r.Static("/static", "./public")中进行设置。

不需要将视频转换成二进制流存储在数据库中,按照接口文档的说明存储到本地,提供地址即可。