《苍穹外卖》项目的定位是一款为餐饮企业定制的软件产品。该项目是一个在线外卖点餐订购系统,顾客可以通过网站或者手机App订购点餐。
开发环境搭建主要包含前端环境和后端环境两部分。作为服务端开发工程师, 此课程学习的重心应该放在后端的业务代码上, 前端的页面只需要导入资料中的nginx即可。
管理端:
用户端
(最适合新手的SpringBoot+SSM项目《苍穹外卖》实战—(一)项目概述_I'm Jie的博客-CSDN博客)
Nginx是一款轻量级的web服务器、反向代理服务器、电子邮件代理服务器,特点是占有内存少、并发能力强。Nginx反向代理就是将前端发送的动态请求由Nginx转发到后端服务器,负载均衡从本质上来说也是基于反向代理来实现的,最终都是转发请求。
Nginx反向代理的好处:
(本处参考此原文链接:https://blog.csdn.net/qq_62006367/article/details/132621248)
JWT是JSON Web Token的缩写,即JSON Web令牌,JWT是Auth0提出的通过对JSON进行加密签名来实现授权验证的方案,就是登陆成功后将相关信息组成json对象,然后对这个对象进行某中方式的加密,返回给客户端,客户端在下次请求时带上这个token,服务端再收到请求时校验token合法性,其实也就是在校验请求的合法性。
使用基于 Token 的身份验证方法,大概的流程是这样的:
1) 客户端使用用户名跟密码请求登录
2) 服务端收到请求,去验证用户名与密码
3) 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
4) 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
5) 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
6) 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据。
总的来说就是客户端在首次登陆以后,服务端再次接收http请求的时候,就只认token了,请求只要每次把token带上就行了,服务器端会拦截所有的请求,然后校验token的合法性,合法就放行,不合法就返回鉴权失败。
(此处参考原文链接:百度安全验证)
当我们需要保存某些密码信息以用于身份确认时,如果直接将密码信息以明码方式保存在数据库中,不使用任何保密措施,系统管理员就很容易能得到原来的密码信息,这些信息一旦泄露, 密码也很容易被破译。为了增加安全性,有必要对数据库中需要保密的信息进行加密,MD5算法可以很好地解决这个问题,因为它可以将任意长度的输入串经过计算得到固定长度的输出,而且只有在明文相同的情况下,才能等到相同的密文,并且这个算法是不可逆的,即便得到了加密以后的密文,也不可能通过解密算法反算出明文。
第一步:定义接口,确定接口的路径、请求方式、传入参数、返回参数。
第二步:前端开发人员和后端开发人员并行开发,同时,也可自测。
第三步:前后端人员进行连调测试。
第四步:提交给测试人员进行最终测试。
操作步骤:
1). 从资料中找到项目接口文件
2). 导入到YApi平台 在YApi平台创建出两个项目,选择苍穹外卖-管理端接口.json导入
(原文链接:https://blog.csdn.net/DU1149507047/article/details/132511480)
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务它的主要作用是:使得前后端分离开发更加方便,接口的文档在线自动生成,knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。
搭建Swagger并引入Swagger的依赖包
io.springfox springfox-swagger2io.springfox springfox-swagger-ui
引入knife4j的依赖
com.github.xiaoymin knife4j-spring-boot-starter
加入注解代码
在浏览器输入地址:http://localhost:8080/doc.html,即可访问接口文档。
(此处参考原文链接:https://blog.csdn.net/qq_66231801/article/details/126057953)
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
(百度百科-验证)
1、SpringCache是Spring提供的一个缓存框架,在Spring3.1版本开始支持将缓存添加到现有的spring应用程序中,在4.1开始,缓存已支持JSR-107注释和更多自定义的选项。
2、Spring Cache利用了AOP,实现了基于注解的缓存功能,并且进行了合理的抽象,业务代码不用关心底层是使用了什么缓存框架,只需要简单地加一个注解,就能实现缓存功能了,做到了对代码侵入性做小。
org.springframework.boot spring-boot-starter-data-redisorg.springframework.boot spring-boot-starter-cache
1)EnableCaching
标注于SpringBoot应用启动类上,添加此注解表示开启Spring Cache缓存;移除表示关闭缓存。如果在全局配置文件中添加如下配置,即使在启动类上标注EnableCaching注解,Spring Cache缓存然后是关闭状态。
(1)Cacheable
添加缓存的核心注解,分两种情况:一是对应key值未有缓存数据,先执行方法,然后根据condition和unless条件决定是否添加缓存;二是对应key值已有缓存,不执行方法体,直接返回数据。
(原文链接:https://blog.csdn.net/qq_41138191/article/details/132046448)
Spring Task是Spring 3.0后推出的定时任务模块,职责是按周期后台自动执行任务。Spring Task可利用Cron表达式实现灵活的定时处理。只需要在配置类中添加一个@EnableScheduling注解即可开启SpringTask的定时任务能力。
WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
(百度百科-验证)
Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。 - 官网地址:https://echarts.apache.org/zh/index.html