Ruoyi框架前后端交互的整个流程 -后端

1,233 阅读3分钟

​ 持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情  后端是如何接受前端的请求

ruoyi框架的后端整体结构

​编辑

若依框架看似有多个独立的项目,但只有一个入口程序(ruoyi-admin里面RuoYoApplication),入门程序一旦启动,其他项目都会启动起来。

​编辑

 

Ruoyi-common是注解、过滤器,异常及工具类的封装。

Ruoyi-framework是事务管理;

Ruoyi-generator是自动生成bean等映射文件及vue前端;

Ruoyi-quartz是定时任务的配置

Ruoyi-system主要是bean类,接口类与实现类等;

Ruoyi-admin是业务层,直接与前端交互

业务层在ruouyi-admin里,从包名就可以看出具体的请求方法

​编辑

但是以下这个注解是什么意思呢?

@PreAuthorize

答案:权限认证,用户是否有操作的权限,有则执行,无则报错

@GetMapping("/list")

答:是路径,一个方法的全路径=类上路径+方法上路径;

若类上无路径,该方法的全路径就是方法上的路径;

前后端请求的案例:

​编辑

 ​编辑

 ​编辑

 ​编辑

 ​编辑

请求数据库到此结束。

疑惑:

各大模块之间都有独立的pom.xml文件,各个独立的模块之间如何通信的???

答:1、引入类  2、@Autowired自动装配

为什么前端发送请求给这个项目,项目就能够精准的找到某个类的方法里呢?

答案:拦截器。所有请求,经过拦截器,都能精准转发。

它是如何实现数据库与bean类映射的?

Mapper文件与数据库关联。

它为什么不需要写映射文件就可以呢?什么起作用?

答案:有映射文件,只不过若依框架只需要执行sql语句,在前端就能自动生成bean service mapper以及xml文件,直接下载既可。

这个方法中的参数(SysRole role)是不是不需要的,因为前端没有传递参数过来?

答案:在这个查询数据库中所有数据是不需要的,但是这个方法还对应前端条件查询,所以参数必不可少。

List数据为什么不需要封装成jsonobject或者jsonarray就可以给前端,并且前端返回的还是…

答案:封装了,有专门的类 ,也有封装成Object自定义类 

​编辑

​编辑 

 后端如何把数据返回给前端的

答案:直接return就可以了,类必须是@RestController而不能是@Controller,前者返回数据,后者是调转页面。

前端是如何展示数据的?

答案:获取后端数据,然后通过v-for渲染

数据权限在前后端是如何控制的?

答案:不同的用户拥有不同的权限,登录成功时,查询用户拥有的权限并与token存储在redis里,前后端根据用户自带的权限展示出可以展示的。

证明:先登录一个普通的用户,看看页面的网络信息。

​编辑

 ​编辑

在点击登录的时候,首先验证用户名与密码是否正确。然后返回一个口令 

​编辑

​编辑

​编辑 数据给前端,前端通过一些校验来显示或者隐藏一些东西

​编辑

  1. 后端采用权限限制访问,请问前端传什么值过来了,后端才放行了,为什么我们没看到呢?

答案:前后端访问是token令牌,每个用户都不同的token,token与该用户权限以键值对的方式存储。前后端根据这个用户权限展示或隐藏

那么为什么后端会设置权限呢?

答案:防止postman以及爬虫人员解析出后端地址,没有后端权限,就能直接访问后端

​编辑

我们拿postman做实验:

管理员的特殊权限,普通用户看不到,但是当你知道后端地址,是不是就可以自己用postman查看返回的数据。

后端有权限设置,你没有token就不能访问后端,自然看不到数据

​编辑

是不是只要有token就可以拿到数据?

是的!!!

​编辑

 ​编辑