抖音项目开发笔记|青训营笔记

265 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记

这篇笔记主要记录在青训营的抖音项目开发过程中自己编写的模块和遇到的一些挑战。

字节青训营的大项目分为“推荐引擎”和“抖音项目”两个可供各小组选择,我们小组在讨论过后选择的是“抖音项目”,主要的目的是为了熟悉在Go语言环境下的后端开发,学习一下Go语言相关的后端框架,包括HTTP框架,数据库存储框架,redis缓存数据库和消息队列的使用。

经过小组分工,我被分配的模块是“视频投稿”和“发布列表”两个接口。

项目结构

首先介绍一下我们小组对项目结构的搭建,由于小组的各位大多经历过java的后端开发,因此对于java后端开发中的mvc结构十分熟悉,因此也考虑将项目的后端分层为控制层、服务层和数据库接入层,方便我们进行后端的开发,整体结构如下图所示。

image.png

视频投稿模块

该模块的功能,已登录的用户选择特定的视频,输入相应的标题,将其投稿到服务器。视频投稿模块前后端的接口如下图。其中,前端给后端传递用户token用于用户的权限判断,此外还有视频数据data和视频标题title,都以post的形式传递到后端。后端在处理完视频投稿的请求之后,返回状态码和相关描述。

image.png

后端在获得前端的视频投稿的请求之后,会进行如下步骤:

  1. 通过用户token获得用户的id,判断用户是否处在有效的登录状态。
  2. 使用ffmpeg工具,截取视频第一帧作为封面,保存封面,生成封面路径。
  3. 保存视频内容到服务器,生成视频路径。
  4. 调用dao层接口,将视频信息存入数据库的video表单。
  5. 返回状态码和相关描述给客户端。

以上步骤有任何一步出错都会引发报错,给客户端返回错误信息。

发布列表模块

该模块的功能,为已登录的用户获得其已经投稿过的所有视频列表。其前后端接口如下图所示,其中,客户端给后端传递的数据包括用户id和用户token。后端给前端返回的信息包括状态码、状态描述和一个视频列表,其中每一个视频包含视频的作者信息、点赞数、评论数、标题等内容,较为复杂。

image.png

后端在获得前端的请求之后,会进行如下步骤:

  1. 判断用户token和用户id的一致性和合法性。
  2. 通过userId搜索video表单获得该用户投稿的所有视频列表。
  3. 对于列表中每一个视频,搜索点赞表获得用户对该视频的点赞情况,将其加入视频信息。
  4. 将完整的投稿视频信息列表返回给客户端。

以上步骤有任何一步出错都会引发报错,将错误信息返回客户端。

在开发过程中遇到的一系列问题和挑战会放在后一篇笔记中记录。