这是我参与「第三届青训营 -后端场」笔记创作活动的的第六篇笔记。
内裤外穿队抖声项目文档
队长: 邹锐涛
队员: 周文浩、李政德
一、项目灵感
近年来,以抖音为代表的短视频平台的出现标志着互联网行业正式进入web2.0时代。产品优秀的数据表现让抖音很快成为字节跳动战略级产品。字节最核心的算法优势也用到了抖音上,一开始就在产品层面加入算法推荐模型保证内容充分符合用户喜好。
为了更好的学习以抖音为代表的短视频平台的前沿技术,并感受字节跳动公司的优秀企业文化,我小组选择了极简抖音(抖声)项目。
二、项目亮点
项目目录结构采用MVC模式:
分为:middleware层、model层、repository层、service层、controller层
使用JWT作为用户验证:
介绍:使用 Go 语言社区中的 jwt 相关库来构建我们的应用
使用ZAP库来提高日志性能:
介绍:使用zap作为日志库,提高日志记录性能以及格化式日志
三、难点突破
对于我们队伍来说,我们队伍都不是有很多开发经验和框架使用经验的大佬。从一开始的gin框架的使用,到JWT的了解到使用,再到MVC框架完成整个项目的代码结构设计。对于其他大佬来说,可能不是什么难题,很朴素,但是对于我们这些菜鸡来说,真的是一种突破。
三、项目目录结构
项目目录结构采用mvc模式
3.1 middleware层
有关中间件的一些操作
| jwt.go //解析JWT字符串,判断JWT是否合法,合法就将解密信息写入context中;
| logger.go //注册及配置log对象,记录controller函数调用时间。
3.2 model层
model层即数据库实体层,也被称为entity层。
一般数据库一张表对应一个实体,结构属性同表字段一一对应。
| comment.go // 评论struct
| favorite.go // 点赞视频struct
| user.go // 用户struct
| video.go // 视频struct
| common.go // 通用请求和响应的struct
3.3 repository层
repository层即数据持久层。
repository层的作用为访问数据库,向数据库发送sql语句,完成数据的增删改查任务。
| Comment.go // 有关评论数据库操作
| Favorite.go // 有关视频点赞数据库操作
| Relation.go // 有关用户关注数据库操作
| User.go // 有关用户操作数据库操作
3.4 service层
service层即业务逻辑层。
service层的作用为完成功能设计。
service层调用repository层接口,接收repository层返回的数据,完成项目的基本功能设计。
| Comment.go // 评论操作函数
| Favorite.go // 视频点赞函数
| Feed.go // 视频流函数
| Publish.go // 视频上传函数
| Relation.go // 用户关注函数
| User.go // 用户操作函数
3.5 controller层
controller层即控制层。
controller层的功能为请求和响应控制。
controller层负责前后端交互,接受前端请求,调用service层,接收service层返回的数据,最后返回具体的页面和数据到客户端。
| Comment.go // 接收前端请求并调用service层评论操作函数
| Favorite.go // 接收前端请求并调用service层视频点赞函数
| Feed.go // 接收前端请求并调用service层视频流函数
| Publish.go // 接收前端请求并调用service层视频上传函数
| Relation.go // 接收前端请求并调用service层用户关注函数
| User.go // 接收前端请求并调用service层用户操作函数
3.6 config层
包含数据库配置信息
其他
| .gitattributes // 文件结尾规范
| .gitignore // 忽略联网的静态文件
| main.go // 后端入口文件
| router.go // 后端路径配置
四、数据库设计
数据库包含User,Video,Relation,Comment,Favorite五个表
无法复制加载中的内容
五、致谢
俗话说,“三人行,必有我师。”感谢字节跳动青训营给我们提供了这个相互交流相互学习的平台,让我们认识到了如此优秀的队友和老师,让我们从go语言的小白一步步劈荆斩棘克服重重困难完成这个项目。感谢青训营的老师们辛勤的付出,感谢我的队友们,与你们一起学习的日子是快乐的,一起奋斗的日子是难忘的。这段青训营的经历将成为我们人生中宝贵的财富!