这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记。
项目结构
- controller文件夹 包含具体代码实现,包名controller,分为5部分代码
- user,用户相关代码
- video,视频相关代码
- follow,关注相关代码
- favorite,点赞相关代码
- comment,评论相关代码
- routers文件夹 初始化数据索引,初始化引擎配置,构建路由,启动服务。同样分为5部分代码:
- user
- video
- follow
- favorite
- comment
-
models文件夹 存储公共的结构,工具代码,创建数据库sql等
-
public文件夹 存储本地视频
-
main.go主程序
-
go.mod,go.sum等依赖管理
接口安排
- 视频流接口,投稿接口,发布列表:2人
- 用户注册,用户登录,用户信息:2人
- 赞操作,点赞列表:1人
- 评论操作,评论列表:1人
- 关注操作,关注列表,粉丝列表:2人
具体实现
- 先做单元测试,后面再联调测试
- 初始化:读取数据库数据到内存
- GET:根据request读取到内存数据,返回response
- POST:接受上传的数据,更新内存和数据库数据
数据库相关
设计的数据库如图示
- 因用户相互关注可能造成数据冗余,关注表增加status字段,-1表示a关注b,0表示ab相互关注,1表示b关注a
- create_time使用timestamp,因为要返回按投稿时间倒序的列表
- user表单有关注总数和粉丝总数
- url用varchar(128)
- 将用户id+timestampe 作为video的标识符
- 实体属性命名按照接口说明来,减少同学们后续开发过程中的理解难度
- favorite表中的属性类型也改为bigint,因为他们和其他id类型对应
- relation表添加id项作为主键,因为关注者id和被关注者id应该都是外键