近日循衰,看了篇文章,名為《一篇來(lái)自前端同學(xué)對(duì)后端接口的吐槽》勉失,閱后羹蚣,頗有感觸。
在文中乱凿,這個(gè)槽吐得犀利顽素,甚合吾意。作者開(kāi)篇就拋出了自己的觀點(diǎn):究竟接口應(yīng)該由誰(shuí)來(lái)設(shè)計(jì)徒蟆?是接口的消費(fèi)者胁出,還是接口的提供者?消費(fèi)者就是使用并展現(xiàn)接口數(shù)據(jù)的前端人員段审,對(duì)應(yīng)的提供者則是后端人員全蝶。
通常接口的定義是由后端人員來(lái)設(shè)計(jì),這樣建庫(kù)寺枉、建表也方便抑淫,一條路就走下去了。設(shè)計(jì)完之后呢姥闪,就丟給前端去用始苇,后端不用,就如文中提到的“好比一個(gè)從來(lái)不嘗自己做的菜的廚子筐喳,你指望他的菜能好到哪里去催式,他的廚藝能好到哪里去?”避归,這就很有可能導(dǎo)致設(shè)計(jì)出來(lái)的接口不好用荣月。
我待過(guò)的都是小公司,大公司的情況是什么樣梳毙,沒(méi)待過(guò)哺窄,不清楚,沒(méi)有發(fā)言權(quán)。做為一個(gè)小公司萌业,我們沒(méi)有架構(gòu)師蔑担,接口也都是由后端的哥們?cè)O(shè)計(jì),因?yàn)槔习逭J(rèn)為由后端人員來(lái)設(shè)計(jì)接口咽白,項(xiàng)目有保障,前端的人員不懂后臺(tái)鸟缕,不能設(shè)計(jì)晶框;做為我們前端也認(rèn)為,前端設(shè)計(jì)出來(lái)的接口字段還得要后端來(lái)實(shí)現(xiàn)懂从,不知對(duì)后端的數(shù)據(jù)結(jié)構(gòu)有什么影響授段,是不是數(shù)據(jù)庫(kù)不好架構(gòu),表是不是不好設(shè)計(jì)番甩,到時(shí)候侵贵,實(shí)現(xiàn)不了也是白費(fèi)。因此缘薛,由后端來(lái)設(shè)計(jì)接口也是件水到渠成的事兒窍育。
由提供者設(shè)計(jì)接口其實(shí)沒(méi)有什么不妥,只要你別站在開(kāi)發(fā)者的角度來(lái)想問(wèn)題宴胧。
在實(shí)際項(xiàng)目中調(diào)用接口時(shí)漱抓,我的體會(huì)是太難用了,接口里什么數(shù)據(jù)都有恕齐。獲取文章的信息乞娄,連作者的用戶(hù)信息都有,而且信息還非常之全显歧,什么用戶(hù)的創(chuàng)建時(shí)間仪或、用戶(hù)的權(quán)限標(biāo)識(shí)、用戶(hù)名的修改時(shí)間......士骤,不光這樣范删,獲取的文章信息里,還有幾個(gè)空字段敦间,都是數(shù)據(jù)庫(kù)里預(yù)留的瓶逃。看起來(lái)廓块,接口數(shù)據(jù)要嘛有嘛厢绝,可前端從接口中抽取的有用信息,經(jīng)常都不到一半带猴,造成了極大的帶寬浪費(fèi)昔汉。我只要小而美,你給我弄了個(gè)大而全。
相比大而全靶病,更煎熬的是会通,接口返回的數(shù)據(jù),你前端不能直接用娄周,得二次加工涕侈。用一個(gè)for
循環(huán),根據(jù)某個(gè)字段id煤辨,把獲取的數(shù)據(jù)全部或部分地篩選一遍裳涛,重新組織出一個(gè)新數(shù)據(jù)集來(lái),最終展現(xiàn)的是這個(gè)新數(shù)據(jù)集众辨,而不是接口給的數(shù)據(jù)端三。
有時(shí),在另外一個(gè)場(chǎng)景需要數(shù)據(jù)時(shí)鹃彻,提供者會(huì)跟你說(shuō):“你調(diào)之前那個(gè)接口就行郊闯,里邊有數(shù)據(jù),你自己摘一下蛛株⊥帕蓿”
累啊,而且這種情形還經(jīng)常在你眼前出現(xiàn)谨履。
最后然痊,借用文中作者的話(huà)做個(gè)總結(jié)吧:“API和代碼應(yīng)該是精準(zhǔn)的,準(zhǔn)確表達(dá)你想實(shí)現(xiàn)的一切而不存在有歧義屉符。一個(gè)接口本應(yīng)該就專(zhuān)注一件事情剧浸。”