有不少朋友咨詢我,想用JeeSite做前后分開的應(yīng)用,或者手機(jī)端API怎么調(diào)用?又或者只想用JeeSite作為服務(wù)端API,僅提供服務(wù)接口怎么做?那這篇文章一定適合你,下面我來介紹下一些JeeSite已內(nèi)置的接口及如果自己來開發(fā)API接口提供服務(wù)。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供綦江網(wǎng)站建設(shè)、綦江做網(wǎng)站、綦江網(wǎng)站設(shè)計(jì)、綦江網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、綦江企業(yè)網(wǎng)站模板建站服務(wù),十年綦江做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。內(nèi)置接口 系統(tǒng)登錄
JeeSite的系統(tǒng)默認(rèn)登錄,設(shè)置了DES加密,如果不想加密,可將secretKey設(shè)置為空即可,或更改密鑰,配置如下(jeesite.yml):
shiro: loginSubmit: # 登錄提交信息安全Key,加密用戶名、密碼、驗(yàn)證碼,后再提交(key設(shè)置為3個(gè),用逗號(hào)分隔) secretKey: thinkgem,jeesite,com # 設(shè)置為空,關(guān)閉登錄DES加密。 # secretKey: ~ # 如果是JS請(qǐng)求可能會(huì)有跨域訪問問題,可將如下參數(shù)設(shè)置為,允許的域名,全部域名設(shè)置*號(hào),否則設(shè)置為空 accessControlAllowOrigin: \'*\'
如果開啟了加密,你就需要先將DES加密工具引入:
JS:<script src="${ctxStatic}/common/des.js?${_version}"></script>
Java: com.jeesite.common.codec.DesUtils
引入完成之后就可以通過如下方法進(jìn)行調(diào)用加密了:
JS:
<script> var secretKey = \'${@Global.getConfig("shiro.loginSubmit.secretKey")}\'; var username = DesUtils.encode(\'system\', secretKey); var password = DesUtils.encode(\'admin\', secretKey); console.log(\'&username=\' + username + \'&password=\' + password); </script>
Java:
String secretKey = Global.getConfig("shiro.loginSubmit.secretKey"); String username = DesUtils.encode("system", secretKey); String password = DesUtils.encode("admin", secretKey); System.out.println("&username=" + username + "&password=" + password);
以上兩種語言,輸出結(jié)果相同如下:
&username=F3EDC7D2C193E0B8DCF554C726719ED2&password=235880C505ACCDA5C581A4F4CDB81DA0
下面我們就可以拿著這個(gè)用戶名密碼進(jìn)行測(cè)試登錄了。
通過JS的Ajax或者通過Java的HttpClient進(jìn)行POST或GET請(qǐng)求如下地址,即可進(jìn)行登錄驗(yàn)證:
http://127.0.0.1:8980/js/a/login?__login=true&__ajax=json&username=F3EDC7D2C193E0B8DCF554C726719ED2&password=235880C505ACCDA5C581A4F4CDB81DA0
你也可以添加登錄附加參數(shù)如下:
1、可以指定登錄設(shè)備類型(在線用戶列表區(qū)分、登錄驗(yàn)證碼按設(shè)備區(qū)分,可根據(jù)設(shè)備指定session超時(shí)時(shí)間,默認(rèn)PC): ¶m_deviceType=mobileApp 2、可以指定登錄的系統(tǒng)(區(qū)分不同的菜單,默認(rèn)default) ¶m_sysCode=mobileApp 3、可以指定登錄頁面和主框架頁的視圖(默認(rèn):employee) ¶m_userType=member
若登錄信息不正確,則返回如下失敗JSON數(shù)據(jù):
{ "username": "F3EDC7D2C193E110B8DCF554C726719ED2", "rememberMe": false, "rememberUserCode": false, "params": "", "shiroLoginFailure": "org.apache.shiro.authc.UnknownAccountException", "message": "賬號(hào)或密碼錯(cuò)誤, 請(qǐng)重試.", "isValidCodeLogin": false, "result": "false", "sessionid":"2a6669501bf24afebcf4ff63eb048a56" }
如果失敗,第二次登錄,建議附加一個(gè)__sid參數(shù),用來指明是同一個(gè)會(huì)話,如:
http://127.0.0.1:8980/js/a/login?__login=true&__ajax=json&username=F3EDC7D2C193E0B8DCF554C726719ED2&password=235880C505ACCDA5C581A4F4CDB81DA0&__sid=2a6669501bf24afebcf4ff63eb048a56
注意:若參數(shù)配置的密碼失敗次數(shù)超過了預(yù)警值,則返回的結(jié)果信息中的isValidCodeLogin會(huì)變?yōu)閠rue,這時(shí)你需要調(diào)用http://127.0.0.1:8980/js/validCode?__sid=2a6669501bf24afebcf4ff63eb048a56地址來獲取驗(yàn)證碼圖片,另外請(qǐng)注意,移動(dòng)端一般調(diào)用是無cookie的,建議加請(qǐng)求參數(shù)中要包含__sid參數(shù),否則獲取到的驗(yàn)證碼值將無法與您登錄請(qǐng)求會(huì)話匹配。
若登錄信息正確,則返回如下登錄成功JSON數(shù)據(jù):
{ "user": { "id": "system", "status": "0", "remarks": "", "userCode": "system", "loginCode": "system", "userName": "超級(jí)管理員", "userType": "none", "mgrType": "0", "lastLoginIp": "127.0.0.1", "lastLoginDate": "2018-03-14 22:34:44", "userWeight": 0, "oldLastLoginIp": "127.0.0.1", "corpName_": "JeeSite", "corpCode_": "0", "oldLoginDate": "2018-03-14 22:34:44", "avatarUrl": "/ctxPath/static/images/user1.jpg" }, "result": "true", "message": "登錄成功!", "sessionid": "5fe9c7c45ded4425b03eff8f78179637" }
在登錄成功的信息里,也有個(gè) sessionid 屬性,該屬性值將作為你以后訪問系統(tǒng)的憑證,相當(dāng)于token令牌,舉例如下:
1、獲取用戶權(quán)限信息: http://127.0.0.1:8980/js/a/authInfo?__sid=5fe9c7c45ded4425b03eff8f78179637 2、獲取用戶菜單信息: http://127.0.0.1:8980/js/a/menuTree?__sid=5fe9c7c45ded4425b03eff8f78179637 3、重新獲取登錄信息: http://127.0.0.1:8980/js/a/index.json?__sid=5fe9c7c45ded4425b03eff8f78179637 4、獲取當(dāng)前用戶信息: http://127.0.0.1:8980/js/a/sys/user/info.json?__sid=5fe9c7c45ded4425b03eff8f78179637 系統(tǒng)退出
http://127.0.0.1:8980/js/a/logout?__ajax=json&__sid=5fe9c7c45ded4425b03eff8f78179637
注意:無cookie環(huán)境下,必須要指定要退出的sessionid
返回JSON數(shù)據(jù):
{"result":"true","message":"退出成功!"} 接口發(fā)現(xiàn)
剩下的接口就不一一說明了,交給大家一個(gè)接口發(fā)現(xiàn)的方法。
所有連接加 .json 或 .xml 或增加 __ajax=json 參數(shù),或增加 __ajax=xml 參數(shù),則自動(dòng)返回 json 或 xml 數(shù)據(jù),而不返回視圖,舉例:
用戶列表的訪問地址是 /a/sys/empUser/list,如果直接訪問,則返回頁面的視圖界面,如果加后綴 .json,則返回視圖所需要的json數(shù)據(jù),如:/a/sys/empUser/list.json,這樣返回的數(shù)據(jù),就可以在你的前端分離應(yīng)用中使用了。
所有列表加載的數(shù)據(jù)均使用 listData 為后綴獲取數(shù)據(jù),如用戶列表的數(shù)據(jù)地址為 /a/sys/empUser/listData,則直接返回JSON數(shù)據(jù)。
listData只是一個(gè)命名規(guī)則,如果你發(fā)現(xiàn)了不遵循規(guī)范的地址,怎么辦?你可以通過Chrome瀏覽器的開發(fā)者界面(F12),打開Network,F(xiàn)ilter中選擇XHR,好了,準(zhǔn)備就緒,這是你點(diǎn)擊列表里的查詢按鈕,即可監(jiān)控到訪問的數(shù)據(jù)的地址是什么
開發(fā)一個(gè)API接口在你的Controller映射方法上增加@ResponseBody即可返回JSON數(shù)據(jù),而不返回視圖
或者替換@Controller為@RestController,則應(yīng)用所有映射方法均返回JSON數(shù)據(jù)。
如果你想兩用,就如 接口發(fā)現(xiàn) 章節(jié)所述,增加 .json 后綴即可。
另外,對(duì)于移動(dòng)端或高并發(fā)的應(yīng)用對(duì)于流量是非常珍貴的,通過通用方法可能會(huì)返回一些很多無用的數(shù)據(jù),這時(shí),你最好單獨(dú)覆寫Rest清理無用的數(shù)據(jù)為null,則不會(huì)返回到前臺(tái)。
文章題目:JeeSite4.0前后分離、接口調(diào)用、移動(dòng)端API
當(dāng)前鏈接:http://vcdvsql.cn/article18/choodp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、搜索引擎優(yōu)化、響應(yīng)式網(wǎng)站、營銷型網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)