项目总结和复盘
(1)
B2C(Business to Customer)。B2C中的B是Business,意思是企业,2则是to的谐音,C是Customer,意思是消费者,所以B2C是企业对消费者的电子商务模式。这种形式的电子商务一般以网络零售业为主,主要借助于Internet开展在线销售活动。
在线教育系统,分为前台网站系统和后台管理系统,B2C模式。
前台用户系统包括课程、讲师、问答、文章几大大部分,使用了微服务技术架构,前后端分离开发。
后端的主要技术架构是:SpringBoot + SpringCloud + MyBatis-Plus + MySQL + Maven+EasyExcel+ nginx
前端的架构是:Node.js + Vue.js +element-ui+NUXT+ECharts
其他涉及到的中间件包括Redis、阿里云OSS、阿里云视频点播
业务中使用了ECharts做图表展示,使用EasyExcel完成分类批量添加、注册分布式单点登录使用了JWT
(2)
项目前后端分离开发,后端采用SpringCloud微服务架构,持久层用的是MyBatis-Plus,微服务分库设计,使用Swagger生成接口文档
接入了阿里云视频点播、阿里云OSS。
系统分为前台用户系统和后台管理系统两部分。
前台用户系统包括:首页、课程、名师、问答、文章。
后台管理系统包括:讲师管理、课程分类管理、课程管理、统计分析、Banner管理、订单管理、权限管理等功能。
前后端联调经常遇到的问题
1、请求方式post、get
2、json、x-wwww-form-urlencoded混乱的错误
3、后台必要的参数,前端省略了
4、数据类型不匹配
5、空指针异常
前后端分离项目中的跨域问题是如何解决的
后端服务器配置:我们的项目中是通过Spring注解解决跨域的 @CrossOrigin
也可以使用nginx反向代理、httpClient、网关
说说你做了哪个部分、遇到了什么问题、怎么解决的
分布式id生成器在前端无法处理,总是在后三位进行四舍五入。
分布式id生成器生成的id是19个字符的长度,前端javascript脚本对整数的处理能力只有2的53次方,也就是最多只能处理16个字符
解决的方案是把id在程序中设置成了字符串的性质
前端渲染和后端渲染有什么区别
前端渲染是返回json给前端,通过javascript将数据绑定到页面上
后端渲染是在服务器端将页面生成直接发送给服务器,有利于SEO的优化
能画一下系统架构图吗
Bug记录
maven错误解决
用我的仓库
删了包,让它重新下
执行了全局异常处理
常见的排错方式
如下错误
排错思路
从头开始想,当我点击这个按钮的时候发生了什么事,从前端想到后端依次检查。如果都没有错误那就检查其他配置,如nginx,nacos,等第三方技术
好,那么我们来实践一下
1、从前到后发森什么事了?
2、详细分析
用开发者工具抓包,看看请求的过程都发生了什么
因为整个项目是微服务架构,这里其实是订单微服务调用了课程信息、用户信息微服务。
用户信息都是显示出来的,那就说明是课程微服务出问题了,我们先用swagger进行测试看看接口的功能有没有问题
问题逐渐清晰了,后端功能没问题,那就是前端的问题了
其实刚才我们就能定位到是前端的问题,因为课程id参数为undefined,参数是通过前端传的。为了更严谨,我们选择都测试。
让目光再次回到前端代码
再次测试
Feign调用异常FeignException$NotFound: [404] during
一般来说,feign报404错误有以下几个原因
1、路径错误
在服务消费者断采用GetMapping方式,如
@GetMapping(“knowledge/metadata/delete/{mdcode}”)
在服务提供者端,用
@RestController
@RequestMapping(“knowledge”)
public class KnowledgeGraphController {
@RequestMapping(“metadata/delete/{mdcode}”)
(实现方法)
}
服务消费者端,一定要加上knowledge呀喂
2、在多个客户端上启动了服务提供者服务,而这两边的服务方法没同步,所以在调用feign时,会采用负载均衡,在多个客户端上一边读取一次。如果这个时候恰好读的是没有指定方法的客户端提供的服务,就会报404错误。
建议改好方法之后提交,两边再跑服务
3、路径上参数为null
例如mdcode 为null,匹配不到路径地址,触发不了路径问题
参考
视频演示
尚硅谷_谷粒学苑-微服务+全栈在线教育实战项目_哔哩哔哩_bilibili
什么是跨域