spring gateway 鉴权_通过spring实现service变成controller,代码得到了简化
在網(wǎng)上發(fā)現(xiàn)了一個牛X的思路,在做restful的時候,如果業(yè)務(wù)改變,需要每次都修改controller,后來方便了,直接透傳的方式,其實(shí)也比較麻煩,每次都要寫controller。需求變了接口也發(fā)生了改變,長期這樣的結(jié)果,就是維護(hù)成本越來越高,直接service 通過spring 讓他變成controller不就少寫很多代碼了。源碼:https://github.com/limingios/netFuture/tree/master/api網(wǎng)關(guān)/idig8-api-gateway
背景
移動互聯(lián)時代,都在追尋一個萬能的解,其實(shí)這個解可能不存在。其實(shí)后端開發(fā)的挑戰(zhàn)越來越多。里面很多個controller,如果系統(tǒng)越來越龐大,導(dǎo)致的結(jié)果維護(hù)困難。
什么是API網(wǎng)關(guān)
API網(wǎng)關(guān)是一個輕量的java http 接口組件,可無縫將普通的 Serive 方法轉(zhuǎn)換成 http 接口。并從已下幾點(diǎn)來達(dá)到提高開發(fā)效率與接口質(zhì)量的目的。
- 普通的http接口
- API網(wǎng)關(guān)接口的實(shí)現(xiàn)
當(dāng)初一個接口開發(fā)一個控制器,1000個接口開發(fā)1000個控制器。一個一個封裝參數(shù),質(zhì)量也提高了統(tǒng)一規(guī)范,出問題統(tǒng)一的方式回饋。不規(guī)范的代碼也會被api網(wǎng)關(guān)攔截掉。
代碼講解
就5個類,不到500行代碼。開發(fā)的人最喜歡又小又精湛的代碼,不容易軟。方便理解,方便使用,又粗又大的代碼,很不方便遷移,不好控制容易軟。
1.ApiGatewayHandler.java
轉(zhuǎn)換器和調(diào)用加載器
2.ApiGatewayServlet.java
類似springboot的一個入口類
3.APIMapping.java
注解暴露類
4.ApiRequest.java
請求封裝類
5.ApiStore.java
API IOC 大倉庫代碼的方式流程圖
- 請求參數(shù)說明:
名稱類型描述methodstring方法名稱paramterjson業(yè)務(wù)參數(shù)timestamplong請求時間戳
- 實(shí)現(xiàn)技術(shù):
接口安全的業(yè)務(wù)需求
- 接口安全級別分組
我的,賬戶信息
商品展示,商品列表
3.黑白名單組
商品詳情內(nèi)的展示,已登錄和未登錄之間的區(qū)別
- 基于Token安全機(jī)制認(rèn)證要求
fiddler抓包工具。可以實(shí)現(xiàn)。
用戶Id,在網(wǎng)絡(luò)上是不進(jìn)行傳輸?shù)?#xff0c;都是用token來代替
客戶端和服務(wù)端都有一套token和Secret的,傳輸?shù)臅r候不是用secret傳輸,是的簽名
- Token 認(rèn)證機(jī)制整體架構(gòu)
整體架構(gòu)分為Token生成與認(rèn)證兩部分:
- Token表結(jié)構(gòu)說明:
其實(shí)如果token加入索引的話,查詢也比較快,但是相對于redis來說肯定是沒有redis快的。
- 業(yè)務(wù)請求具體參數(shù):
簽名規(guī)則:
簽名的目的:
服務(wù)端簽名驗(yàn)證的具體流程:
簽名認(rèn)證與API網(wǎng)關(guān)的整體認(rèn)證流程
PS:主要是了解思路,對于性能我建議先別考慮,先實(shí)現(xiàn)之后才能談性能問題,性能問題沒有絕對的只有相對的。最主要是簽名的獲取生成的思路。源碼在github上。
看到這里,點(diǎn)了關(guān)注吧!
總結(jié)
以上是生活随笔為你收集整理的spring gateway 鉴权_通过spring实现service变成controller,代码得到了简化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网站集成支付宝
- 下一篇: 算法基础:图的相关算法知识笔记