RuoYi框架使用爬坑日記
1.簡介
RuoYi框架是基于SpringBoot、Shiro、Mybatis的權(quán)限的后臺管理系統(tǒng),本例中使用的爬坑日記是基于RuoYi-Vue(SpringBoot+Vue)+MybatisPlus進(jìn)行部署的前后端分離項目,首先先來波官網(wǎng)傳送門http://ruoyi.vip/
因為需要快速搭建項目,所以找到若依這個比較完善的框架進(jìn)行開發(fā),若依框架中基本繼承了目前能想到的大多數(shù)功能,開發(fā)快捷、方便,很多都配置好了直接進(jìn)行調(diào)用就可以了。
開發(fā)過程中的常見的一些問題,文檔上大多數(shù)都有解決辦法,常見問題的解答。
2.爬坑日記
2.1 外部接口無法訪問
2.1.1 問題描述
由于要使用外部接口,需要跳出本來的鑒權(quán)一系列操作,比如:外部對接接口、下載等。
{"msg":"請求訪問:/XXX/test,認(rèn)證失敗,無法訪問系統(tǒng)資源","code":401}
2.1.2 解決
2.1.2.1 方法一:可以慘遭若依自帶的upload方法,將src/main/java/....../framework/config/SecurityConfig.java中的添加匿名可訪問的權(quán)限,再在請求頭中相應(yīng)的地址常量,如下可進(jìn)行頁面下載請求,其中注意antMatchers中"test/**"和"/test**"的區(qū)別,"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手動設(shè)置個請求頭的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 請求參數(shù)問題
2.2.1 get請求
axios({
url: '/test/test',
method: 'get',
params: queryParams
}).then(response => {
相關(guān)業(yè)務(wù)代碼。。。
})
2.2.2 post請求,使用若依自帶分頁方法
2.2.2.1 首先在自定義的controller中繼承extends BaseController ,再在方法的返回類型設(shè)置TableDataInfo類(封裝好的分頁處理類),第一行進(jìn)行分頁類型的初始化startPage()方法,獲取請求中的分頁信息等操作,接著就可以寫相關(guān)業(yè)務(wù)代碼,查詢出一個集合list,最后返回封裝好的getDataTable(list)方法,在前端
@PostMapping("/list") public TableDataInfo list(@RequestBody 實體類 en){ startPage(); List<實體類> list = xxxService.getList(en); return getDataTable(list); }
前端分頁組件
v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getDataList" /> 初始化的參數(shù) 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.總結(jié)一些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")設(shè)置查詢指定字段name和age queryWrapper.select(Test.class,test -> !test.getColumn().equals("name") && !test.getColumn().equals("id"));查詢排除name和id外的所有字段參考 路漫漫其修遠(yuǎn)兮,在使用若依框架快速開發(fā)的過程中,雖然里面很多封裝好的方法使用起來很遍歷,開發(fā)文檔也解決了大多數(shù)問題,但是畢竟大多數(shù)都是個性化開發(fā),里面或多或少會出現(xiàn)一卡卡一天,一個bug改一天的情況,再次總結(jié)部分開發(fā)過程中的爬坑問題和解決方法。。。加油~
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。