bug记录
- 知识点记录
技术选型
用户层的技术,主要都是前端技术;
整体结构
后端环境搭建
缺少sky-take-out.iml文件,在IEDA的终端输入 mvn idea:module 可生成;
导入黑马提供的项目后,IDEA中jdk环境需改为18,Maven地址需改为自己的地址;
resources文件夹下的application.yml文件需更改数据库的用户名和密码;
IDEA中 ctrl+alt+点击 进入java文件,ctrl+点击 进入接口;
-
简单的sql用注解方式配置;涉及复杂的、动态的标签使用,会将sql配置到mapper映射文件中,xml形式注入。
-
前端请求的地址是http://localhost/api/employee/login,后端接口地址是http://localhost:8080/admin/employee/login,前端是如何请求到后端服务的?
nginx反向代理,就是将前端发送的动态请求由nginx转发到后端服务器。(前端并不是直接请求到后端的tomcat服务器的,而是由nginx做了个转发)
nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其他点是占有内存少,并发能力强。 -
为什么不直接请求后端?
① 使用nginx反向代理可以提高访问速度,nginx可以做缓存。② 进行负载均衡(所谓负载均衡就是把大量的请求按照我们指定的方式均衡地分配给集群中的每一台服务器。如果前端直接请求后端,只能固定地访问某一台服务器。)③ 保证后端服务安全。(不会暴露后端地址。前端请求到nginx服务器,再由nginx服务器走内网转发给后端服务。) -
正向代理和反向代理的区别
- 代理的对象不同:正向代理代理的是客户端,而反向代理代理的是服务器。
- 目的不同:正向代理主要是为了保护客户端隐私和访问控制,而反向代理主要是为了保护服务器安全、负载均衡和提高性能。
- 配置位置不同:正向代理在客户端配置,反向代理在服务器端配置。
- 匿名性:正向代理通常用于匿名访问互联网,而反向代理不会隐藏服务器的真实身份。
在实际应用中,正向代理和反向代理可以同时使用,以提供更全面的网络访问控制和安全性。
-
nginx负载均衡的配置方式
图例128 129是两台后端服务器。
nginx负载均衡策略默认是 轮询(轮着来);还有其它策略:weight(权重分配);ip_hash(根据ip分配,每一个访客可以固定访问一个后端服务);least_conn(把请求优先分配给连接数少的后端服务);url_hash(相同的url会被分配到同一个后端服务);fair(相应时间短的服务会被优先分配)。
完善登录功能
问题:员工表中的密码是明文存储,安全性太低。
改善:将密码加密后存储,使用MD5加密方式对明文密码加密。(MD5加密,只能由明文计算得到密文,无法从密文解密得到明文。)
步骤:①修改数据库中的明文密码 ②修改Java代码,前端提交的密码进行MD5加密后再跟数据库比对。
导入接口文档
postman、YAPI、apiFox等主要用于API的测试、设计和监控;
swagger可以做到生成接口文档,以及在线接口调试页面,只要用户按照其规范去定义接口及接口相关的信息。
Knife4j是为Java MVN框架集成Swaager生成api文档的增强解决方案。
YAPI/Postman等:是设计阶段使用的工具,管理和维护接口;
Swagger是在开发阶段使用的框架,帮助后端开发人员做后端的接口测试。
-
使用方式:
① 导入knife4j的maven坐标
② 在配置类中加入knife4j相关配置
③ 需设置静态资源映射,否则接口文档页面无法访问
-
Swaager常用注解