持续创作,加速成长!这是我参与「掘金日新计划 · 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里,前后端根据用户自带的权限展示出可以展示的。
证明:先登录一个普通的用户,看看页面的网络信息。
编辑
编辑
在点击登录的时候,首先验证用户名与密码是否正确。然后返回一个口令
编辑
编辑
编辑 数据给前端,前端通过一些校验来显示或者隐藏一些东西
编辑
- 后端采用权限限制访问,请问前端传什么值过来了,后端才放行了,为什么我们没看到呢?
答案:前后端访问是token令牌,每个用户都不同的token,token与该用户权限以键值对的方式存储。前后端根据这个用户权限展示或隐藏
那么为什么后端会设置权限呢?
答案:防止postman以及爬虫人员解析出后端地址,没有后端权限,就能直接访问后端
编辑
我们拿postman做实验:
管理员的特殊权限,普通用户看不到,但是当你知道后端地址,是不是就可以自己用postman查看返回的数据。
后端有权限设置,你没有token就不能访问后端,自然看不到数据
编辑
是不是只要有token就可以拿到数据?
是的!!!
编辑
编辑