說說APP接口中的版本控制


引言

接口是APP的重要組成部分,數據是APP的核心,接口是連接APP和數據的紐帶。

一般情況下,APP中會有大量的接口,再加上版本的變化,接口的升級,一個接口
可能會衍生出很多個稍有差異的接口,這個時候接口如果維護的不好,后邊會亂為
一鍋粥,客戶端不同版本使用不同的接口名(xxxv1,xxxv2,xxxv3.....)

這個對客戶端來說貌似是很蛋疼的事情,如果能把版本控制完全放到服務端是不是
更友善點,也會比客戶端靈活很多,發版出去之后也可以很優雅的修改。

設計

這個並非我憑空想出來的,是在公司里面開發的時候無意中發現的,覺得設計的還挺好,整理總結了下,拿出來分享下。知識應該是開源共享的。


客戶端發出去的版本token是固定不變的。
這里面有下面幾個要點:

  • token,使用token間接的標記請求的接口版本,這么做也在一定程度上防止了很多無用的請求,如果使用的是https傳遞信息,就更安全了,根本截獲不到這個token
  • server中的token => interface versionmap,保存了token和對應接口的版本號,請求來了之后會先根據這個尋找對應的接口版本。
  • interface{num}目錄,每個目錄對應一個版本,根據請求的接口讀取對應目錄下的接口配置文件,找到最終要執行的具體接口。

http://xxxx.xxxx.com/module/controller/list?token=6918b5e0567c7d47314c10ed413e3f95這個請求最終會打到listv2這個接口。

這樣就可以在服務端靈活的配置接口了,客戶端只要每次請求的時候帶上默認的token參數,就可以得到自己想要的了,完全不需要關心版本的問題。

擴展設計

當然了,如果還有其他信息的話也可以帶在token中,比如說客戶端操作系統類型,我們可以將token擴展為{clientType}_token,這樣token中就附帶了客戶端的信息,可以很輕松的獲取到客戶端類型,根據不同的類型也可以做一些想做的事情.

總結

還是那句話,有些司空見慣的東西並不是想象的那么簡單,可能也是前輩門經過多次總結優化出來的。

本期名言警句(來自魯豫對健林的采訪)

小勝靠智,大勝靠德


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM