resty更新header控制api版本數據源讀寫分離

 更新時間:2022年03月07日 12:14:45   作者:Dreampie  
這篇文章主要介紹了resty的1.2.0-SNAPSHOT版本更新,可以通過header控制api的版本實現數據源讀寫分離,有需要的朋友可以借鑒參考下,希望能夠有所幫助<BR>,

前言

Resty目前積累到450 star,還有1個多月滿一年了,在沒有推廣的情況下如果能積累到500 star,真是棒棒的,如果覺得不錯可以給顆心(https://github.com/Dreampie/Resty),希望大家多多鼓勵,也希望有心的同學參與維護,開源說明它屬于大家,無論你使用或者作為一個框架的基礎學習還是從中得到靈感做出好用的東西 都希望你能和大家一起分享 開源希望大家互相幫助。

本次更新說大不大說小不小,主要解決一下對api的控制問題:

1.使用header來控制api版本

最初設計的api控制方式主要基于url的版本控制,更新時要么提供一個基礎的ApiResource,要么提供一個新的項目做為新版本接口,作為一個強迫癥一直對此功能心懷不滿。

我一直以來對團隊要求都是只要更新沒有影響到整體返回的數據結構,是不允許升級接口的版本號的,兼容老版本非常重要,如果遇到重構和結構大規模變化,通過header來提供一個新的api并保留老api一段時間(我們為客戶端提供了強制升級計劃,一旦啟動客戶端必須升級到新版本),后續會把老的api清理掉,理論上一個api最多存在兩個版本,如果不是只能說明你設計的接口穩定性較弱,自由可控對強迫癥來說非常重要,示例:

@GET(value?=?"/:get",?headers?=?{"Accept:?application/vnd.resty.v1+json"})
//使用:來分割key和value
??public?WebResult<List<User>>?get(String?get,?Date?x,?HttpResponse?response)?{
????throw?new?WebException(HttpStatus.NO_CONTENT,?"xxx");
??}

2.讀寫分離的數據源支持

簡單配置不需要考慮太多,同時提醒:如果本次請求的事務范圍內即有讀由有寫,會根據你的@Transaction注解的事務來使用連接,比如需要寫入庫的連接,那么讀取時也會使用寫入庫的連接,節省一次打開讀取庫連接的資源

//讀寫分離
????DruidDataSourceProvider?writeDsp?=?new?DruidDataSourceProvider("write");
????DruidDataSourceProvider?readDsp?=?new?DruidDataSourceProvider("read");
????ActiveRecordPlugin?activeRecordDdsp?=?new?ActiveRecordPlugin("readwrite",?writeDsp,?readDsp);
????activeRecordDdsp.addIncludePackages("cn.dreampie.resource");
????pluginLoader.add(activeRecordDdsp);

另外一直對使用java代碼的動態代理實現的aop感覺不好,如果有人能提供基于aspectj的嵌入代碼來實現事務來提高代碼的優化,那就非常感謝了,目前有個aspectj簡單的例子:https://github.com/Dreampie/aspectj-demo

相關鏈接:

Resty 的詳細介紹:點擊查看

Resty 的下載地址:點擊下載

以上就是resty更新header控制api版本數據源讀寫分離的詳細內容,更多關于header控制api數據源讀寫分離的資料請關注腳本之家其它相關文章!

相關文章

  • 嘁,都2020了,你咋還在單純的使用if-else

    嘁,都2020了,你咋還在單純的使用if-else

    我們在寫程序時,常常需要指明兩條或者更多的執行路徑,使得程序執行時,能夠選擇其中一條路徑,去執行相應的語句,產生對應的結果 —— 這也是條件語句在程序中的作用。下面通過例子給大家介紹下if-else的使用,感興趣的朋友一起看看吧
    2020-10-10
  • Scala項目構建工具sbt和IntelliJ IDEA環境配置詳解

    Scala項目構建工具sbt和IntelliJ IDEA環境配置詳解

    這篇文章主要介紹了Scala項目構建工具sbt和IntelliJ IDEA環境配置,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • DataGrip 2020.1 安裝與激活方法

    DataGrip 2020.1 安裝與激活方法

    DataGrip是一款數據庫管理客戶端工具,方便連接到數據庫服務器,執行sql、創建表、創建索引以及導出數據等。這篇文章主要介紹了DataGrip 2020.1 安裝與激活教程,需要的朋友可以參考下
    2020-09-09
  • 解決appcode打開workspace無法找到xcodeproj項目文件問題

    解決appcode打開workspace無法找到xcodeproj項目文件問題

    這篇文章主要介紹了解決appcode打開workspace無法找到xcodeproj項目文件問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • 看完工資立馬翻3倍?。ǚ浅绦騿T勿看)

    看完工資立馬翻3倍?。ǚ浅绦騿T勿看)

    負責粘貼你也可以做到!
    2019-02-02
  • 趁熱打鐵!HTTPGet與HTTPPost的區別詳解

    趁熱打鐵!HTTPGet與HTTPPost的區別詳解

    這篇文章主要介紹了趁熱打鐵!HTTPGet與HTTPPost的區別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • 簡單介紹HTTP請求方式中8種請求方法

    簡單介紹HTTP請求方式中8種請求方法

    這篇文章主要介紹了HTTP請求方式中8種請求方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-09-09
  • Appium的使用與入門(這款神器你值得擁有)

    Appium的使用與入門(這款神器你值得擁有)

    這篇文章主要介紹了Appium的使用與入門(這款神器你值得擁有),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • SecureCRT的使用超詳細教程

    SecureCRT的使用超詳細教程

    SecureCRT是Windows下登錄UNIX或Linux服務器主機的軟件,優點是可以一次創建多個 Tab Page,連接多臺遠程主機,下面給大家介紹下SecureCRT的使用超詳細教程,感興趣的朋友一起看看吧
    2021-11-11
  • 詳解git commit --amend 用法

    詳解git commit --amend 用法

    這篇文章主要介紹了詳解git commit --amend 用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08

最新評論

免费人成视频在线观看