这是我参与「第五届青训营」伴学笔记创作活动的第 10 天
这篇笔记是大项目部署的记录,会随着项目的推进保持更新。
抖音项目服务端 -- 六带一队
一. 重要资料
二. 开发环境配置
-
代码运行环境(版本号为本机环境):
-
Golang 1.19.5
-
Mysql 8.0
-
Redis 5.0.14
以上环境的安装教程百度即可。
-
-
根据自己的环境修改
DouyinOrigin/config/config.yaml中的内容,一般只需要修改用户名和密码。 -
使用安卓模拟器或安卓手机进行测试,可以参考这篇文章。
-
个人习惯:使用Goland进行开发,蓝叠模拟器进行测试,Typora写文档。
三. Github协同开发tips
-
加入organization,找到仓库,确认是否拥有dev分支的修改权限(理论上来说没有main分支的修改权限)。
-
配置 Github 的 SSH key,可以参考这篇文章。
-
打开 git bash,使用SSH链接克隆项目到本地。
若使用 Goland,也可以从新建项目处选择Get from VCS,复制项目SSH到URL处,确认本地工作目录,创建项目。
-
进入dev分支进行add commit push操作,不要直接在main上修改。
git checkout -b dev origin/dev // 在本地创建dev分支 git add . //将所有的更改都拉到commit上 git commit -m "备注信息" //提交 git push origin dev //将更改推送到远程分支dev git pull //从远程分支中得到最新的提交并合并到本地-
推送到远程分支之前,请保证程序是可运行的状态,并在commit中尽量详细地写明更新的内容。
-
如果push失败,可能是因为其他队员的最新提交和你试图推送的提交有冲突,可以先用
git pull把最新的提交从远程分支dev中抓下来,然后在本地合并,解决冲突。更多细节可参考:廖雪峰的git教程-多人协作。
-
如果不喜欢输命令行,可以使用Goland中的Git菜单进行操作,尤其建议使用Goland进行提交前的检查。
-
-
根据开发进度,队长会不定时将dev分支中的内容合并到main分支。
四. 项目架构
-
使用到的技术
-
框架:gin、gorm
-
数据库:Mysql
-
其他:Redis, jwt
-
-
采用 repository → service → controller 的分层结构:
-
controller层
-
解析得到参数,传递给service层。
-
如果需要返回数据信息,则调用service层的逻辑得到数据;如果不需要返回数据信息,只需要执行特定动作修改数据库,那么调用service层的逻辑执行这个动作。
-
将得到的数据(如果有)与状态码和状态描述打包,返回响应。
-
-
service层
-
如果上层需要返回数据信息,则进行参数检查、数据准备、数据打包;如果上层不需要返回数据信息,则进行参数检查、动作的执行。
-
进行数据准备或动作执行时,需要调用repository层的逻辑。
-
-
repository层
- 面向数据库进行增删改查。
-
-
文件目录说明
Douyin ├── /config/ 配置文件 ├── /common/ 通用结构体 ├── /controller/ 视图层 ├── /service/ 逻辑层 ├── /repository/ 数据层 ├── /middleware/ 中间件 │ ├── jwt/ 鉴权 │ └── redis/ 缓存 ├── /router/ 路由配置 ├── /data/ 上传的视频文件存储在本地 ├── /go.mod/ ├── main.go └── README.md