1.問題:
在對接一些平臺的時候,發(fā)現(xiàn)接口調(diào)用方式不同了,這樣子做是有什么好處么?
舉個例子:
某平臺的v1版本是一個接口一個路徑的方式:(@RequestMapping的形式)
如:查詢用戶信息接口是這樣的,http://xxxxx.com/v1/getUserInfo
查詢用戶余額接口是這樣的,http://xxxxx.com/v1/getUserBanlance
v2版本變成傳參code來決定調(diào)用方法:
如:查詢用戶信息接口是這樣的,http://xxxxx.com/v2/commonRequest?code=getUserInfo
查詢用戶余額接口是這樣的,http://xxxxx.com/v2/commonRequest?code=getUserBanlance
2.求助
冒昧說下我自己的觀點(diǎn),v2版本這種方式需要獲取到code參數(shù),并且使用反射的方式去調(diào)用對應(yīng)方法,效率豈不是更加低一些,這么設(shè)計(jì)的優(yōu)點(diǎn)在哪里呢?希望能得到大家的幫助。
api安全設(shè)計(jì)、精簡思想,提高安全性,符合rest api設(shè)計(jì)風(fēng)格,加一個router而已,對效率影響微乎其微?,F(xiàn)在各大公司都紛紛開始使用這種方式了。
想象一下你的app有一萬個業(yè)務(wù),你需要一萬個接口嗎?維護(hù)成本怎么算,重構(gòu)怎么算,迭代怎么看,code reviewer 怎么說?這些問題都會冒出來的,現(xiàn)在一個統(tǒng)一入口,統(tǒng)一路由,一目了然。
再比如你抓取某app的數(shù)據(jù),發(fā)現(xiàn)他們的api好多啊,而且請求頭、參數(shù)什么的全部暴露出來了,安全性不高的api基本就是羊毛黨的口頭肉,統(tǒng)一API入口后,會發(fā)現(xiàn)想要拼接模擬api的難度系數(shù)上升了。
其實(shí)我覺得實(shí)現(xiàn)中是否使用了反射或者任何細(xì)節(jié)技術(shù)不是判定一個API設(shè)計(jì)優(yōu)劣的先決條件,如題主描述的場景,用V1還是V2其實(shí)取決于對兩個業(yè)務(wù)耦合內(nèi)聚的理解。V2對用戶來說,查詢用戶信息和查詢余額就是同一接口,通過傳入不同的參數(shù)來獲得不同的數(shù)據(jù)。
我個人倒覺得V1更符合RestFul API的設(shè)計(jì)理念,也是結(jié)合這兩個接口其實(shí)不太相同,至少返回上一個是用戶信息,一個是余額,語義差別較大。至于實(shí)現(xiàn)上,第一種其實(shí)同樣也可以通過反射實(shí)現(xiàn)。同樣,第二種也可以不通過反射。
總之,API的設(shè)計(jì)不看后端實(shí)現(xiàn),只看最后出來的URL長什么樣子,綜合來和RestFull是個不錯的規(guī)范,建議參考。
至于實(shí)現(xiàn)上,當(dāng)你發(fā)現(xiàn)有一些無聊代碼時,可能可以使用反射來消除這種無聊代碼,但從我個人來說,不覺得反射用在這個地方用得好,我們其實(shí)更應(yīng)該關(guān)注業(yè)務(wù)代碼中真正需要重構(gòu)的地方。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。