第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

突發(fā)奇想的設(shè)計問題探討:webApi項目接口細(xì)分化的解決方案是怎樣的?

突發(fā)奇想的設(shè)計問題探討:webApi項目接口細(xì)分化的解決方案是怎樣的?

一切的開端假設(shè)有這樣一個故事,故事的最開始是要對用戶的信息進(jìn)行管理。用戶的信息主要有:id用戶標(biāo)志符name姓名nickName昵稱password密碼mobilePhone手機號validateCode短信驗證碼gender性別birthday生日state狀態(tài)/正?;蚪胏reateTime注冊日期于是后端開發(fā)者開發(fā)了一系列針對用戶信息進(jìn)行增刪改查的接口:增:/api/user/post刪:/api/user/delete改:/api/user/put查:/api/user/get很好,前端開發(fā)者調(diào)用這四個接口不停增刪改查開心得不行。然后突然有一天,發(fā)現(xiàn)了問題。遇到的問題用戶管理功能中,需要實現(xiàn)用戶賬號密碼的注冊和用戶手機號驗證短信的注冊,而這些前端開發(fā)者調(diào)用的都是/api/user/post接口,只不過通過傳入的參數(shù)值不同來實現(xiàn):用戶賬號密碼注冊:{nickName:"young",password:"12345"}用戶手機號驗證碼注冊:{mobilePhone:"12345678910",validateCode:"123456"}(這里因為舉例所以只例舉了一個接口被兩個業(yè)務(wù)功能使用的場景。實際項目中已經(jīng)遇到了更多的業(yè)務(wù)功能使用同一個接口)這時候前端開發(fā)者就懵逼了,我調(diào)用的是同一個接口,但是我要實現(xiàn)什么功能卻是根據(jù)我傳入的參數(shù)來確定的,這也太蛋疼了!而且這個例子還是最為簡單的,有些業(yè)務(wù)復(fù)雜的接口根本是看都看不懂!盡管有接口文檔,但是通常來說,前端開發(fā)者依舊會云里霧里。甚至,前端會有這種感想:我是誰,我來自哪里,我為什么要調(diào)用這屎一樣的接口?于是細(xì)分的接口需求就被提了出來。細(xì)分的接口需求簡而言之,就是不再對外直接開放post接口,而是通過提供細(xì)分后的接口來間接調(diào)用。舉個栗子:原先的方案://不論手機號注冊還是用戶名注冊都來調(diào)用這個接口//前端開發(fā)者表示很懵逼RequestMapping("/post")publicboolpost(Useruser){//sth}改進(jìn)的方案://隱藏post方法,改為由細(xì)分化的對外接口來調(diào)用privateboolpost(Useruser){//sth}//通過手機號注冊RequestMapping("signinbymobilephone")publicboolsignInByMobilePhone(stringmobilePhone,stringvalidateCode){Useruser=newUser();user.mobilePhone=mobilePhone;user.validateCode=validateCode;returnpost(user);}//通過昵稱注冊RequestMapping("signinbyname")publicboolsignInByNickName(stringnickName,stringpassword){Useruser=newUser();user.nickName=nickName;user.password=password;returnpost(user);}通過提供細(xì)分化的接口,使得接口對前端更為友好且沒有二義性。我的問題這種細(xì)分化的接口方案是否是最好的解決方案?通常互聯(lián)網(wǎng)公司進(jìn)行接口細(xì)分化的時候是否也是采用這種方案,還是說有更好的方法?之前有聽說過“后端的后端”的解決方案,有誰知道具體是怎么實現(xiàn)的?另外一個問題是,如果細(xì)分接口的名字很長,比如上文中的/signinbyname,這種時候用全小寫的方式好(/signinbyname),還是用駝峰式的方式(/signInByName)好?大家一起探討下~
查看完整描述

2 回答

?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗 獲得超6個贊

我覺得根據(jù)模型來寫接口確實有弊端
我認(rèn)為如果頁面功能確定的話,變動不大的話,前后端溝通規(guī)范及時
那就采取接口細(xì)分
我猜如果不細(xì)分的話后端也得寫一堆根據(jù)接口參數(shù)不同來實現(xiàn)不同功能的邏輯判斷前端如果沒有好的文檔來記錄傳什么參數(shù)來實現(xiàn)什么功能的話,也是很累的
所以就細(xì)分唄
我覺得可以聯(lián)合前后端來個驗證可行性的行動拿出一些時間,來實施接口細(xì)分然后評判一下開發(fā)效率等等,評價一下接口細(xì)分的優(yōu)點缺點,再決定是否改成接口細(xì)分
沒有最好的方法,只有更合適的方法
接口名稱的話,看你功能模塊劃分可以寫成/login/byname之類的
                            
查看完整回答
反對 回復(fù) 2019-05-12
?
慕妹3242003

TA貢獻(xiàn)1824條經(jīng)驗 獲得超6個贊

跟你遇到一樣的問題,說過一樣的話?!笆阂粯拥慕涌凇备愕淖龇ㄒ粯?。命名的話,我們用的駝峰法。看著比較清晰。尤其變量名比較多的時候
paramTypeValue、paramNameValue、paramIdValue
paramtypevalue、paramnamevalue、paramidvalue
我覺得上面一行的駝峰法看著更方便
                            
查看完整回答
反對 回復(fù) 2019-05-12
  • 2 回答
  • 0 關(guān)注
  • 409 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號