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