苍穹外卖第一天
1 前端环境搭建
使用 nginx 服务器启动前端服务。 注意: 必须在没有中文的文件路径下才能正常启动
2 后端环境搭建
2.1 sky-take-out目录结构
1.sky-take-out maven父工程,统一管理依赖版本,聚合其他子模块
2.sky-common 子模块,存放公共类:工具类,常量类,异常类
3.sky-pojo 子模块存放实体类:VO,DTO
4.sky-server 子模块,后端服务,存放配置文件,controller、server、Mapper等
2.2 四类简写
- Entity 实体
- DTO 数据传输对象
- VO 试图对象,为前端展示数据的对象
- POJO 普通Java对象,只有属性和对应的getter和setter
2.3 使用Git进行版本控制
2.3.1 .gitignore git忽略文件
2.3.2 创建Git本地仓库
- 使用idea中的VCS创建一个本地Repository
- commit到Git(不推送,还没连接远程仓库)
- 在GitHub或者Gitee创建一个仓库,复制git链接
- 推送至远程仓库(首次需要登录/验证)
2.3.3 配置数据库导入数据库表
2.3.4 前后端联调
- 在父工程下编译(会同时编译子工程)
2.3.4.1 利用断点走一遍登录流程
注意:8080
- 首先通过EmployeeLoginDTO获取登录username和password
- 通过Employee的login方法获取用户名和密码
- 通过getByUsername方法查询数据库中的数据(select注解)
- 检查用户名不存在、密码不对、账号被锁定等多种异常情况
- 没问题就返回实体对象employee
- 登录成功后,开始生成JWT令牌
- 通过JwtUtil类的createJWT方法创建token
- 使用EmployeeLoginVO的builder方法获取id,username,name,token生成JWT令牌
- 使用Result类的success方法包装返回成功登录状态码(项目中1为成功,0和其他数字为失败)
2.4 nginx反向代理
前端:http://localhost /api/ employee/login
后端:http://localhost:8080/admin/employee/login
2.4.1 反向代理
nginx.conf:
location /api/ {
proxy_pass http://127.0.0.1:8080/admin/;
}
匹配api,将api前半部分换成代理后的地址
http://localhost:8080/admin/ employee/login
2.4.2 负载均衡
upstream webservers{
server 127.0.0.1:8080 weight=90 ;
server 127.0.0.1:8088 weight=10 ;
}
2.4.3 nginx的作用
- 提高访问速度(nginx可设置缓存)
- 负载均衡(将前端发来的请求路由给多台服务器)
- 保证后端安全(不暴露后端地址)
2.5 完善登录功能(解决密码明文保存)
2.5.1 测试密码不相同抛出异常

2.5.2 完善步骤
md5加密算法是单向的,理论上是不可逆的。校验密码是否匹配,通过生成的md5密码字符串进行匹配。
- 在数据库中存入md5加密后的密码(可使用md5在线生成工具)
- 在TODO的位置(获取密码的位置)使用DigestUtils进行加密并比对
2.6 导入接口文档
2.6.1 YApi
Yapi是一个开源接口测试工具,最简单的方法,找一个AI工具给你安装一下就行,然后启动服务就能导入,官方在线预览已不可用。
2.6.2 Swagger
基于Knife4j实现
- 在pom中导入Maven坐标
- 导入docket代码(已提供)
- 设置静态资源映射
- 登录 http://localhost:8080/doc.html 对接口进行测试

2.6.3 Swagger常用注解
作用:让Swagger测试界面更直观清晰
- @Api 用在类,例如Controller,表示对类的说明 @Api(tags = “员工常见接口”)
- @ApiModel 用在类上,例如entity,DTO,VO
- @ApiModelProperty 用在属性上,描述属性信息
- @ApiOperation 用在方法上,例如Controller说明方法的用途,作用
参与讨论