resty更新header控制api版本數(shù)據(jù)源讀寫分離
前言
Resty目前積累到450 star,還有1個(gè)多月滿一年了,在沒有推廣的情況下如果能積累到500 star,真是棒棒的,如果覺得不錯(cuò)可以給顆心(https://github.com/Dreampie/Resty),希望大家多多鼓勵(lì),也希望有心的同學(xué)參與維護(hù),開源說明它屬于大家,無論你使用或者作為一個(gè)框架的基礎(chǔ)學(xué)習(xí)還是從中得到靈感做出好用的東西 都希望你能和大家一起分享 開源希望大家互相幫助。
本次更新說大不大說小不小,主要解決一下對(duì)api的控制問題:
1.使用header來控制api版本
最初設(shè)計(jì)的api控制方式主要基于url的版本控制,更新時(shí)要么提供一個(gè)基礎(chǔ)的ApiResource,要么提供一個(gè)新的項(xiàng)目做為新版本接口,作為一個(gè)強(qiáng)迫癥一直對(duì)此功能心懷不滿。
我一直以來對(duì)團(tuán)隊(duì)要求都是只要更新沒有影響到整體返回的數(shù)據(jù)結(jié)構(gòu),是不允許升級(jí)接口的版本號(hào)的,兼容老版本非常重要,如果遇到重構(gòu)和結(jié)構(gòu)大規(guī)模變化,通過header來提供一個(gè)新的api并保留老api一段時(shí)間(我們?yōu)榭蛻舳颂峁┝藦?qiáng)制升級(jí)計(jì)劃,一旦啟動(dòng)客戶端必須升級(jí)到新版本),后續(xù)會(huì)把老的api清理掉,理論上一個(gè)api最多存在兩個(gè)版本,如果不是只能說明你設(shè)計(jì)的接口穩(wěn)定性較弱,自由可控對(duì)強(qiáng)迫癥來說非常重要,示例:
@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.讀寫分離的數(shù)據(jù)源支持
簡單配置不需要考慮太多,同時(shí)提醒:如果本次請(qǐng)求的事務(wù)范圍內(nèi)即有讀由有寫,會(huì)根據(jù)你的@Transaction注解的事務(wù)來使用連接,比如需要寫入庫的連接,那么讀取時(shí)也會(huì)使用寫入庫的連接,節(jié)省一次打開讀取庫連接的資源
//讀寫分離
????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);另外一直對(duì)使用java代碼的動(dòng)態(tài)代理實(shí)現(xiàn)的aop感覺不好,如果有人能提供基于aspectj的嵌入代碼來實(shí)現(xiàn)事務(wù)來提高代碼的優(yōu)化,那就非常感謝了,目前有個(gè)aspectj簡單的例子:https://github.com/Dreampie/aspectj-demo
相關(guān)鏈接:
Resty 的詳細(xì)介紹:點(diǎn)擊查看
Resty 的下載地址:點(diǎn)擊下載
以上就是resty更新header控制api版本數(shù)據(jù)源讀寫分離的詳細(xì)內(nèi)容,更多關(guān)于header控制api數(shù)據(jù)源讀寫分離的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
支付寶 接口開發(fā)幫助(asp,php,asp.net,jsp)
支付寶的接口開發(fā)使用的技術(shù)含量并不高!因?yàn)槭褂玫氖荋TTP普通GET和Post方式傳遞數(shù)據(jù),而這些數(shù)據(jù)是傳給您的程序由您的程序任意處理和支付寶服務(wù)器處理,所以重點(diǎn)在再流程和傳參!2009-06-06
關(guān)于解決?“Error:?listen?EACCES:?permission?denied?0.0.0.0:
這篇文章主要介紹了在開發(fā)過程中常見的錯(cuò)誤Error:listenEACCES:permissiondenied0.0.0.0:80,并提供了兩種解決方法,大家可以根據(jù)需求選擇對(duì)應(yīng)的方法,需要的朋友可以參考下2024-12-12
自動(dòng)駕駛技術(shù)之V2X技術(shù)的介紹
本章內(nèi)容介紹了如何利用車輛自身的智能,還可以借助外部環(huán)境實(shí)現(xiàn)信息的獲取,這一類技術(shù)統(tǒng)稱為V2X技術(shù)。接下來我們大家一起來學(xué)習(xí)吧2021-08-08
使用八爪魚采集器采集滾動(dòng)加載和點(diǎn)擊加載數(shù)據(jù)的教程
現(xiàn)在很多網(wǎng)站的列表,需要向下滾動(dòng)頁面,才能加載出新數(shù)據(jù)?;蛘唿c(diǎn)擊“查看更多”加載新數(shù)據(jù)。使用廣泛的火車頭采集器相對(duì)無力,使用八爪魚采集器可以采集滾動(dòng)刷新和點(diǎn)擊刷新。2023-05-05
數(shù)據(jù)分析2020年全國各省高考成績分布情況
這篇文章主要介紹了數(shù)據(jù)分析2020年全國各省高考成績分布情況,順便可以用這個(gè)數(shù)據(jù)看每個(gè)省市的一本線劃分比率,還有其他相關(guān)的數(shù)據(jù),需要的朋友可以參考下2020-07-07
IDEA出現(xiàn)java:程序包javax.servlet不存在問題解決方法
這篇文章主要給大家介紹了關(guān)于IDEA出現(xiàn)java:程序包javax.servlet不存在問題的解決方法,這個(gè)錯(cuò)誤提示意味著你的Java程序中缺少了javax.servlet這個(gè)包,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
SolidWorks?2022?安裝教程圖文詳解(含安裝包)
本文詳細(xì)介紹了SolidWorks2022軟件的下載與安裝步驟,包括如何通過百度網(wǎng)盤獲取安裝包,修改注冊(cè)表,啟動(dòng)服務(wù),解壓安裝包,斷開互聯(lián)網(wǎng)連接以及軟件的安裝過程,介紹了從準(zhǔn)備安裝文件到軟件啟動(dòng)的全過程,確保用戶能夠順利完成SolidWorks2022的安裝并啟用2024-11-11

