後端自動化版本管理,再也不用改URL了!

2022-01-15 07:01:17 字數 3740 閱讀 4201

每次公升級介面版本時,後端、前端、客戶端都是痛苦的:

後端:要相容舊版客戶端,以前的介面不能動啊,又得寫新介面、新文件了,唉!

前端:還好,就是版本號到處都是,改起來比較煩。

android:快點啊產品催需求呢,伺服器別停太久。對了你知道編譯一次要多久麼?淚奔。。。

前端:對對,別停太久。還有文件別再寫錯了啊,上次你複製貼上的 v3 害我介面調了半天,原來是 v4 。。。

ios:我也被坑了。。。

後端:呃,我盡快,寫文件會注意的哈。

後端:另外舊網域名稱 也會一直開著,保證不會像上次那樣讓3.0客戶端請求掛的。

後端:@前端 對了,你們用乙個全域性的 base_url 存起來,以後改乙個地方就好了。

android:我們就是這麼幹的嘿嘿!

ios:我們也是,還是我封裝的。

ios:但問題是往往多個介面版本並存,還是要寫好幾個base_url,我們這是從base_url_v2到base_url_v4。

android:唉,這個就沒辦法了。

前端:我們現在也是這麼做的,但之前的那傢伙沒封裝啊,寫得到處都是。。。

後端:周哥,公升級介面版本好煩啊,你有什麼好的辦法嗎?

周哥:具體說下你的問題。

後端:每次都要寫新的介面和文件,伺服器也要重啟,前端和客戶端總是抱怨改網域名稱和文件錯誤。

專案很趕,文件是複製貼上的,總是會落下某些地方沒改。

但是不複製貼上吧,你看看這格式,重新寫實在是太麻煩了!

周哥:哈哈,以前我們也總是碰到這種問題,現在解決了。試試這個

周哥:後端:哇,居然還有這麼厲害的後端框架啊!我只用過ssh。

周哥:ssh太重了,老專案中apijson主要用來實現新介面,新專案就只用apijson了。

後端:可以的。不過它怎麼解決版本問題呢?文件裡沒說啊。

周哥:寫在最下面了。  

後端:可在最外層傳版本version來指定使用的版本,不傳或 version <= 0 則使用最新版。 ??

周哥:描述確實比較簡單,我就問了下作者,他是這麼說的:

tommylemon:

可以在請求時傳入乙個version來指定使用的介面版本號,例如查詢使用者隱私資訊:

url: 

表單:

,

"tag": "privacy",

"version": 1}

而且只需要登入時傳乙個全域性預設version,之後所有需要登入的介面(一般佔絕大部分)就都預設用這個了。

所以查詢使用者隱私資訊就可以省略version了:

,

"tag": "privacy"}

因為上面傳的version和全域性預設version一樣,所以伺服器返回的結果都一樣:

,

"code": 200,

"msg": "success"}

當然如果某個請求需要用到和全域性預設version不一樣的介面,也可以指定當前的version:

,

"tag": "privacy",

"version": 2}

由於第2版介面改了校驗配置,所以返回結果就不一樣了:

,

"code": 406,

"msg": "privacy不允許傳 _password 等[_password, _paypassword]內的任何字段!"}

注:這個介面需要登入許可權,請先點選右上角登入後再請求。 

周哥:我照著這個來,在測試網頁乙個個試了,確實是這樣的。

後端:但還有個問題,專案中可能多個版本並存,它是不是也要同時維護多個版本啊?

周哥:哈哈,以前只有兩種做法:

1.前端根據的需求調對應版本的api,後端只新增對應新需求的api。

2.前端只用乙個版本,後端對新版不需要改的api v2也提供乙個對應新版的api v3,然後和v2一樣處理,可以提取v2的**為乙個公共的函式。

或者就乾脆重定向到v2,這個操作簡單些,但要損失一些效能。

周哥:用apijson就只需要把原來舊版的api改下版本號version為乙個統一的最新版,請求中傳的version如果不存在,則會自動轉到比它高的最接近版本。

後端:也就是我把v1,v2都改成v3,然後前端傳v1或v2過來,它就轉到v3了?如果不改的話還是轉到v2?

周哥:對的。如果不傳version或version<=0,就會強制用最新版。這個在修復某些api漏洞時很有用,把前端請求中的version去掉或者改成0,就可以了。

後端:我覺得可以直接把api的version改成最新版,這樣更簡單。

周哥:確實,小夥子你很聰明啊。

後端:哈哈,謝謝周哥,我去試試。

後端:作者很牛啊

周哥:哈哈,我之前也好奇什麼人能寫出這樣的框架。

周哥:介面都不用寫了,都是框架自動實現的,話說現在終於沒人再催介面了哈哈!

後端:真的很好用啊,以後就讓前端客戶端都在登入時傳乙個version就搞定了。

後端:不過專案中還有些不需要登入就能訪問的介面,例如註冊、找回密碼等,這些就只能每次都傳乙個version了。

周哥:是的,不過絕大部分介面都是要登入後才能訪問的啊。

後端:也是啊。

後端:對了,普通的查詢請求好像沒version的示例啊。

周哥:因為不需要哈哈,作者說get,head請求都是開放請求,沒有版本限制。我試過了確實是這樣。

後端:也就是不用傳version?

周哥:是的,而且請求非常靈活,可以定製請求的內容、json結構,一大堆查詢請求的介面都不用自己寫了。

後端:這樣啊,太棒了,我去star一下。

後端:@前端 @android @ios 新版介面寫好了。

後端:大家把新版請求的主網域名稱改成 以後登入時再傳乙個version就好了。

前端:這麼快?

ios:這麼快?

android:這麼快?

後端:用了新框架嘿嘿!

android:不用換版本號v5了?

ios:以後會要加上嗎?

後端:不用了,以後也不用 v6,v7 了,網域名稱不會再改了。

ios:那不需要登入的介面呢?

後端:不用管,這幾個介面很穩定,暫時不會動的。

android:可以的

ios:贊

前端:厲害,怎麼做到的啊?

後端:大家看下這個,我們後端以後的介面都用新框架寫。

後端:ios:支援

前端:+1

android:好棒,我也玩一玩後端嘿嘿!

apijson - 後端超光速開發框架

github原始碼及文件(右上角點star支援下吧^_^

管理作業自動化

管理作業自動化 圖31 9 選擇作業命令型別 畫面 3.點選 下一步 顯示 輸入transact sql陳述式 畫面 圖31 10 您必須選擇執行指令的資料庫,然後為作業鍵入陳述式,或者按一下 開啟舊檔 來尋找或開啟含有 t sql 命令的檔案。按一下 剖析 檢查您輸入的 t sql 陳述式的語法。...

Puppet 使用者自動化管理

三 使用者和組 使用者資源 user 該資源型別用於管理系統使用者 所以缺少一些特性來管理普通使用者。利用 符合posix api 標準的puppet 自帶的私有工具來進行使用者和組管理 puppet 不會直接修改 etc passwd 檔案。引數 allowdupe 是否允許存在同樣的使用者 可以...

電纜管理實現自動化

電纜管理通常需要繁瑣的手動操作。隨著資料中心運營步伐的加速,有線基礎設施必須實現自動化。自動管理工具使資料中心管理員監控不同基礎設施,收集相關資料,直接接收警告和響應事件。自動化為伺服器 儲存和交換機帶來了便利,但底層物理基礎設施 互聯電纜仍然是手動 繁瑣的,很容易出錯,管理也十分混亂。aim 自動...