RuoYi框架使用爬坑日记

举报
多米诺的古牌 发表于 2022/01/16 18:17:48 2022/01/16
【摘要】 1.简介RuoYi框架是基于SpringBoot、Shiro、Mybatis的权限的后台管理系统,本例中使用的爬坑日记是基于RuoYi-Vue(SpringBoot+Vue)+MybatisPlus进行部署的前后端分离项目,首先先来波官网传送门http://ruoyi.vip/因为需要快速搭建项目,所以找到若依这个比较完善的框架进行开发,若依框架中基本继承了目前能想到的大多数功能,开发快捷、...

1.简介

RuoYi框架是基于SpringBoot、Shiro、Mybatis的权限的后台管理系统,本例中使用的爬坑日记是基于RuoYi-Vue(SpringBoot+Vue)+MybatisPlus进行部署的前后端分离项目,首先先来波官网传送门http://ruoyi.vip/

因为需要快速搭建项目,所以找到若依这个比较完善的框架进行开发,若依框架中基本继承了目前能想到的大多数功能,开发快捷、方便,很多都配置好了直接进行调用就可以了。

开发过程中的常见的一些问题,文档上大多数都有解决办法,常见问题的解答

2.爬坑日记

2.1 外部接口无法访问

2.1.1 问题描述

由于要使用外部接口,需要跳出本来的鉴权一系列操作,比如:外部对接接口、下载等。

{"msg":"请求访问:/XXX/test,认证失败,无法访问系统资源","code":401}

2.1.2 解决

2.1.2.1 方法一:可以惨遭若依自带的upload方法,将src/main/java/....../framework/config/SecurityConfig.java中的添加匿名可访问的权限,再在请求头中相应的地址常量,如下可进行页面下载请求,其中注意antMatchers中"test/**"和"/test**"的区别,"test/**"表示test/abc***之类的url,而"/test**"表示/testabc这样的url请求。

protected void configure(HttpSecurity httpSecurity) throws Exception
.antMatchers("/test/test/**").anonymous()
 window.location.href = process.env.VUE_APP_BASE_API + '/test/id=' + id 

2.1.2.2 方法二:

开始就处理请求头,给没有通过过滤的url手动设置个请求头的token和请求地址的常量

2.1.2.3 方法三:

还有在请求头部这样拼接token的(未尝试) 

Vue.http.headers.common['Authorization'] = 'Bearer '+getToken();参考

2.1.2.4 方法四:

还有在请求头部这样拼接token的(未尝试) 

axios.defaults.headers.common["token"] = localStorage.getItem("token");参考

2.2 请求参数问题

2.2.1 get请求

axios({
            url: '/test/test',
            method: 'get',
            params: queryParams
          }).then(response => {
            相关业务代码。。。
          })

2.2.2 post请求,使用若依自带分页方法

2.2.2.1 首先在自定义的controller中继承extends BaseController ,再在方法的返回类型设置TableDataInfo类(封装好的分页处理类),第一行进行分页类型的初始化startPage()方法,获取请求中的分页信息等操作,接着就可以写相关业务代码,查询出一个集合list,最后返回封装好的getDataTable(list)方法,在前端

   @PostMapping("/list")
   public TableDataInfo list(@RequestBody 实体类 en){
        startPage();
        List<实体类> list = xxxService.getList(en);
        return getDataTable(list);
    }

前端分页组件

<pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getDataList"
    />

初始化的参数

queryParams: {
          pageNum: 1,
          pageSize: 10,
        },
        total: 0,

        dataList: [],

前端请求方法

axios({
          url: '/test/test',
          method: 'post',
          data: JSON.stringify(this.dataForm)
        }).then((data) => {
          if (data && data.code == 200) {
            this.dataList = data.rows;
            this.total = data.total;
          } else {
            this.dataList = []
            this.total = 0
          }

或者这样传个别属性

axios({
              url: `/test/test`,
              method: 'post',
              data: {
                'id': this.dataForm.id || undefined,
                'a': this.dataForm.a,
                'b': this.dataForm.b,
                'test':this.test
              }
            }).then((data) => {
              if (data && data.code === 200) {......

3.总结一些MybatisPlus中条件写法

eq 就是 EQUAL等于 
ne就是 NOT EQUAL不等于 
gt 就是 GREATER THAN大于  
lt 就是 LESS THAN小于 
ge 就是 GREATER THAN OR EQUAL 大于等于 
le就是 LESS THAN OR EQUAL 小于等于

queryWrapper.select("name", "age")设置查询指定字段name和age

queryWrapper.select(Test.class,test -> !test.getColumn().equals("name") && !test.getColumn().equals("id"));查询排除name和id外的所有字段参考

路漫漫其修远兮,在使用若依框架快速开发的过程中,虽然里面很多封装好的方法使用起来很遍历,开发文档也解决了大多数问题,但是毕竟大多数都是个性化开发,里面或多或少会出现一卡卡一天,一个bug改一天的情况,再次总结部分开发过程中的爬坑问题和解决方法。。。加油~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。