先後端分離的問題與解決方案

這些天項目有的API出現版本控制問題,着實忙乎了一小陣,由於項目使用TP5的傳統方法進行版本控制(api目錄下進行版本區分,由請求路徑決定使用的版本)前端

clipboard.png

可是問題每每是,項目使用了v2版本,可是後端又新建了v3,而前端不知情,因此也趁着此次機會,探索了較爲實用的先後端分離問題與解決方案,並作整理。git

較明顯的問題

1.後端 API 產能難免,供給不上的問題
2.後端 API 出現 BUG,須要等待修復的問題
3.先後端溝通差別致使API實現的誤差
4.後端 API 發生了修改,沒有通知到前端,showcase 的時候發現了 bugweb

問題1解決方案

1.後端規範功能函數集、功能模塊集、統一返回格式與方法、提升代碼複用率,從而提升後端API產能問題後端

問題2解決方案

1.API出現BUG,前端提出BUG,並設置修復期限、BUG等級、修復獎勵記錄
2.API從完成到正式使用有三天使用內測期,內測期內前端發現BUG有獎勵記錄
3.前端內測期外的API出現BUG次數做限制,超過則懲罰記錄
4.後端內測期外的API出現BUG次數做限制,超過則懲罰記錄api

問題3解決方案

使用API敏捷原型開發方法:
--前端構造理想IO,即參數,返回數據格式等等(半天)
--後端思考實現可行性,調整IO(半天)
--後端實現API(協商時間),鎖定API版本(具體實現參考下面方案)websocket

問題4解決方案

實現一個簡易型的消息系統(咱們使用了基於swoole實現的websocket,具體可參考個人開源小框架)swoole

1.後端
--API完成
--與前端確認OK,則API鎖定版本V1.0(自動記錄鎖定狀況到日誌)框架

2.需求變化/其餘變更
--解鎖API(自動通知前端,XXAPI版本解鎖了),不解鎖則沒法提交成功
--修改完成後更新API版本,重複步驟1便可前後端分離

API鎖定與版本更新實現方案

概念

  • API版本解鎖:每一個API文件方法頭標明版本號,每次修改需修改版本號,即爲解鎖。
  • API版本升級:每一個API文件方法頭標明版本號,每次修改需修改版本號大於原版本號,即爲版本升級。

實現步驟

1.全部API按特定模塊歸類,例如admin後臺模塊,在API目錄裏編寫相應的各個API文件,或如上圖進行區分
2.記錄全部模塊API目錄的路徑到腳本,在開發人員提交的時候對這些路徑進行檢查
3.編寫檢查API的腳本,工做流程以下:提交時鉤子檢查API文件裏的API方法是否無解鎖的狀況下被修改,即提交的文件若是是API目錄下的API文件,則該文件方法註釋裏的版本號是否與原函數一致,一致且函數內容不同,提交失敗並提示
4.若是提交的API文件版本大於原版本,短信通知過前端,提交成功socket

建議

提交代碼時共觸發兩個腳本,一個作檢查,一個作記錄(記錄前端人員的電話,API目錄)

以上爲粗略說明,如有錯誤與更好建議,請留言反饋,謝謝。

創做不易,GitHub 右上角點 Star 支持下吧,謝謝^_^
基於swoole的實時消息通訊框架
基於Fastadmin整合阿里雲OSS,Redis,物流,短信的後臺系統

相關文章
相關標籤/搜索