Day01-苍穹外卖
Day01苍穹外卖的项目笔记
前言:
我打算用15天的时间写完黑马程序员的苍穹外卖,为了督促自己以及记录项目知识点,所以用项目笔记的方式鞭策自己
今日所学:
- 软件开发整体介绍
- 前端环境搭建
- 后端环境搭建
- 前后端联调
- Nginx反向代理
- 完善登录功能
- 导入接口文档,Swagger功能以及常用注解
1.前端环境搭建
在黑马的资料里找到如下文件:

将其放在没有空格,没有中文的目录下(注意:一定要这么干,否则可能导致后续访问不了相应的端口)
进入到这个文件,双击nginx.exe

打开浏览器,访问localhost: 80
成功跳转到相应页面
在文件放在正确目录且nginx.exe启动无误的情况下,如果未能打开,可以看下是不是端口号被占用的问题

2.后端环境搭建
找到资料的相应代码文件,导入到ideal中
![]()
打开ideal,对导入的项目可以试着进行一次编译,直接编译可能会报如下错误:

我的原因是因为jdk版本不兼容导致的(自己的JDK版本过高)
解决方法:
这边建议直接更换JDK版本(换成18的即可)
这里打开文件->项目结构,更改jdk

记得相应的环境变量也要修改

重新导入项目
搭建数据库环境(将相应的数据库和表建好)

并且切记要修改下自己的数据库配置(application-dev.yml文件中),不然就像我这样卡在登录中进不去
操作完之后,clean并且再次进行compile操作

可以看到已经编译成功
依旧访问localhost:80,相应的也可以登录成功

最后将代码提交到本地的git仓库


3.前后端环境联调
3.1项目整体结构
先看下整体的项目结构
sky-take-out中由三个子文件

第一个sky-commom通常放需要的工具类,通用配置,常量等跨模块共享的代码

第二个sky-pojo通常存放与数据模型相关的类

dto用于与API接口的一个交互
entity存放着与数据库有关的数据模型
vo用于封装返回给前端的数据
第三个 sky-service,主业务模块,用于实现核心的业务逻辑
可以看到经典的mapper-service-controller层

3.2 登录功能运行过程介绍
第一个,从数据库中获取数据,这个不多说,三层模型(controller-service-mapper),这里说下service中的异常处理

在service里面登录出现异常后交给我们的自定义异常进行捕获

之后统一交给我们的全局异常处理器去处理

这里说下为什么可以用BaseExceotion去捕获所有自定义异常
因为除baseException之外的所有自定义异常都继承于baseException,而BaseException又继承于RunTimeException

说回controller层,下面是JWT令牌

使用claims.put是为了令牌的可识别和防篡改,生成这个令牌使用了一个配置类

可以看到prefix = sky.jwt,与yml文件中的属性一一对应

接下来使用EmployeeLoginVO封装前端所需要的数据

最后为了返回给前端的数据统一,封装成一个Reult类使用@ResponseBody注解返回json数据给前端

4.nginx反向代理
把前端发送的动态请求由nginx转发到后端服务器
疑问:
前后端发送和接收请求的地址不一样,那么前端是任何获取后端的数据的?

答案:
通过反向代理,来将前端发送的location/api转换成后端可以识别的路径(admin后面的如login等动态路径保持不变)
在nginx.conf文件中配置(前端环境文件中)

由这配置负载均衡,多个服务器配置多个ip,weight代表着权重

5.完善登录功能
完善登录功能(密码加密)
1.修改数据库明文密码,改为MD5加密后的密文

2.修改Java代码,前端提交的密码进行加密后再跟数据库进行比对

只需要调用DigestUtils的一个方法类就行
重新运行依旧可以登录成功
6.导入接口文档
1.使用YApi
这里因为YApi已经停止注册了,我们使用Apifox
通过创建项目后在项目设置->数据管理->导入数据中选择YApi,然后选择需要导入的文件
这里我创建了两个接口项目

导入json文件,这里已经导入成功

可以看到接口文档的各个信息

7.Swagger介绍
7.1swagger使用
这里我们使用knife4j - Java MVC框架集中Swagger生成APi文档的增强方案
1.导入knife4j的起步依赖

2.在配置类中加入相关的配置(格式固定,cv就行)

这里注意要用basePackage扫描到对应的包文件,不然后续登录接口网站会有问题
3.设置静态资源映射(同上)(这里的doc.html是后续的网址(主机 【localhost:8080】) + )

登录相应网址可以看到相应接口文档已经生成好了

并且会自动解析代码里请求的路径,生成相应的接口测试请求(postman白雪了)

这里进行测试

注意:密码是自动加密的,写加密前的密码
注:
Swagger和 Apifox的区别:
Swagger是设计用的
ApiFox是测试用的
7.2 swagger的常用注解

可以放在类,方法和属性上,通过给注解的方式给予接口网站类似于注释的功能

相应在接口网站上呈现

8.开发小技巧
开发规范小知识:
可以写一个TODO,来标识需要注意的还未更改的点
ideal左边有三个小点,点击即可看见

改完后就可以注释掉了
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)