接口是APP的重要組成部分,數據是APP的核心,接口是鏈接APP和數據的紐帶。安全
通常狀況下,APP中會有大量的接口,再加上版本的變化,接口的升級,一個接口
可能會衍生出不少個稍有差別的接口,這個時候接口若是維護的很差,後邊會亂爲
一鍋粥,客戶端不一樣版本使用不一樣的接口名(xxxv1,xxxv2,xxxv3.....)優化
這個對客戶端來講貌似是很蛋疼的事情,若是能把版本控制徹底放到服務端是否是
更友善點,也會比客戶端靈活不少,發版出去以後也能夠很優雅的修改。操作系統
這個並不是我憑空想出來的,是在公司裏面開發的時候無心中發現的,以爲設計的還挺好,整理總結了下,拿出來分享下。知識應該是開源共享的。設計
客戶端發出去的版本token
是固定不變的。
這裏面有下面幾個要點:版本控制
token => interface version
map,保存了token和對應接口的版本號,請求來了以後會先根據這個尋找對應的接口版本。interface{num}
目錄,每一個目錄對應一個版本,根據請求的接口讀取對應目錄下的接口配置文件,找到最終要執行的具體接口。http://xxxx.xxxx.com/module/controller/list?token=6918b5e0567c7d47314c10ed413e3f95
這個請求最終會打到listv2
這個接口。code
這樣就能夠在服務端靈活的配置接口了,客戶端只要每次請求的時候帶上默認的token
參數,就能夠獲得本身想要的了,徹底不須要關心版本的問題。server
固然了,若是還有其餘信息的話也能夠帶在token
中,好比說客戶端操做系統類型,咱們能夠將token
擴展爲{clientType}_token
,這樣token
中就附帶了客戶端的信息,能夠很輕鬆的獲取到客戶端類型,根據不一樣的類型也能夠作一些想作的事情.blog
仍是那句話,有些司空見慣的東西並非想象的那麼簡單,可能也是前輩門通過屢次總結優化出來的。token
本期名言警句(來自魯豫對健林的採訪)接口
小勝靠智,大勝靠德