day8---苍穹外卖 day01

27 阅读3分钟

Day01 真正要达成的 3 个目标

  1. 项目能跑起来:前端 nginx 能打开页面,后端 SpringBoot 能启动。
  2. 能完成一次联调登录:前端点登录 → 后端进 Controller/Service/Mapper → 查库 → 返回 token。
  3. 能打开接口文档http://localhost:8080/doc.html 能看到 knife4j/Swagger 页面。

1)软件开发流程/角色/环境:你只要记一件事

把“做项目”想成拍电影:

  • 需求:写剧本(需求文档、原型)
  • 设计:定场景、道具(UI/数据库/接口)
  • 编码:开拍(写代码+单元测试)
  • 测试:看片挑错
  • 上线运维:正式上映 & 机房维护

环境:

  • 开发环境:你自己电脑/内网
  • 测试环境:测试同事用的
  • 生产环境:线上给用户用的

2)项目结构:你只要认清 3 个模块在干嘛

把它想成一个餐厅的分工:

  • sky-common:公共“工具箱”(常量、异常、工具类…)
  • sky-pojo:各种“数据模型”(Entity/DTO/VO)
  • sky-server:真正干活的“后厨”(Controller/Service/Mapper/配置/启动类)

你之后看代码迷路,就先问自己:这段代码是在“接单(Controller)”还是“做菜(Service)”还是“去仓库拿货(Mapper)”?


3)前后端联调:为什么前端能打到后端?

你看到的两个地址不一样:

  • 前端请求:http://localhost/api/employee/login
  • 后端接口:http://localhost:8080/admin/employee/login

答案:nginx 反向代理(它像“前台接待”,把 /api 转发给后厨后端)

配置核心就一句:
location /api/ { proxy_pass http://localhost:8080/admin/; }

你只要记住:前端统一打 nginx(80端口),nginx 再转到后端(8080)


4)登录链路:Controller / Service / Mapper 到底各做啥?

讲义给了非常标准的“三层”分工:

  • Controller:收参数、调用 service、封装返回
  • Service:业务校验(用户不存在/密码错/禁用)
  • Mapper:真正查库 select * from employee where username=?

你今天最建议做的 debug:
在登录接口打断点,点一次登录,看调用顺序是不是 Controller → Service → Mapper → DB → 返回


5)完善登录:为什么要 MD5?

讲义说得很直白:员工表明文密码太危险,所以把密码存成 MD5 密文,并且登录时把前端密码也 MD5 再比对。

你只要记住一句话:

数据库存“锁的指纹”(密文),登录时拿“钥匙做一次指纹”(MD5)比对,不存明文。


6)YApi 和 Swagger:它俩不是替代关系

  • YApi:设计阶段用,先把“合同/接口约定”放进去(前后端并行)
  • Swagger/Knife4j:开发阶段用,后端跑起来就能直接在线调接口,还能生成文档

Day01 实操清单

  1. 启动 nginx,浏览器能打开管理端页面(80端口)
  2. 导入 sky.sql,确认表建好了(employee 等)
  3. application.yml 的数据库账号密码,启动后端(8080)
  4. 前端点登录能成功(或你用 Swagger 测登录)
  5. 打开 http://localhost:8080/doc.html 看接口文档
  6. (加分)按讲义把登录密码改成 MD5,并修改代码比对

3 个“最常见卡点”

  1. 前端能开,但登录报 404 / 502:多半是 nginx 代理没转对(/api → 8080/admin)
  2. 登录一直密码错误:你数据库还是明文,但代码已经 MD5(或者反过来)
  3. doc.html 访问不了:静态资源映射没配好(addResourceHandlers