鍍金池/ 問(wèn)答/Java  PHP  Python  Linux/ 來(lái)討論下你們的api是怎么寫(xiě)的?

來(lái)討論下你們的api是怎么寫(xiě)的?

我的理解

  1. 我寫(xiě)了快幾年的api了,一直都遵循著,一個(gè)api接口完成一個(gè)事情的規(guī)則
  2. 我可能還是更多的傾向于一個(gè)接口完成一個(gè)事情!

我的困惑

  1. 現(xiàn)在的有些app首頁(yè)內(nèi)容量很大,有的人主張首頁(yè)一個(gè)api返回所有數(shù)據(jù),因?yàn)樗f(shuō)要減少請(qǐng)求的次數(shù),以減少耗電等
  2. 看一本關(guān)于優(yōu)化的書(shū)籍的時(shí)候,也的卻有提到減少網(wǎng)絡(luò)請(qǐng)求的優(yōu)化方式
  3. 基于1的困惑,我的理解假如有一張表,或者數(shù)據(jù)產(chǎn)生堵塞,會(huì)影響整個(gè)app首頁(yè)的加載,會(huì)不會(huì)更不好。

我想請(qǐng)教或者討論的

  1. 你們的項(xiàng)目,你的接口遵循的是什么規(guī)則
  2. 首頁(yè)的問(wèn)題,你們是如何處理的
  3. 對(duì)于接口分拆和減少網(wǎng)絡(luò)請(qǐng)求你們是怎么權(quán)衡的
回答
編輯回答
淺時(shí)光
  1. 盡量遵循 RESTful ,但是也要和實(shí)際業(yè)務(wù)需求結(jié)合,靈活應(yīng)變。
  2. 首頁(yè)一般是聚合頁(yè),數(shù)據(jù)來(lái)源較多。通常:按功能分,按緩存分。也不會(huì)全部放在一個(gè)接口里。
  3. 靜態(tài)內(nèi)容全部走CDN,減少 PHP 服務(wù)器的壓力,一個(gè)頁(yè)面調(diào)用的 API 接口最多三個(gè)。
2017年8月19日 11:09
編輯回答
離觴

脫離需求談規(guī)范,都是不對(duì)的。正所謂分久必合,合久必分:

在之前,前端的并發(fā)能力有限,減少請(qǐng)求次數(shù)是性能優(yōu)化的一個(gè)重要手段,那你只能妥協(xié)。

現(xiàn)在,你可以在架構(gòu)上嘗試解決,比如http2的合并請(qǐng)求,又或者用api網(wǎng)關(guān)合并,那就能同時(shí)滿足后端保持單一職責(zé),前端減少請(qǐng)求。

總體的趨勢(shì),看起來(lái)是“分”的越來(lái)越徹底,比如從微服務(wù)到FaSS,但那只是把“合”的部分放在“平臺(tái)”來(lái)解決

2017年11月28日 22:19
編輯回答
離殤
  • 接口原則的話,當(dāng)然必須是以業(yè)務(wù)需要為核心前提,規(guī)則的話 RESTful 你可以區(qū)了解下
  • 首頁(yè)的話,看什么樣的網(wǎng)站了,如果數(shù)據(jù)量不大那一次給完數(shù)據(jù)也行,數(shù)據(jù)量大的話我認(rèn)為還是和前端同事商量下怎么去優(yōu)化吧,有些東西能靜態(tài)化的靜態(tài)化,能緩存的緩存
  • 分拆和減少 HTTP 請(qǐng)求這件事情還是那句話,根據(jù)自身的業(yè)務(wù)好好考慮那些請(qǐng)求可以合并,哪些又可以拆分,核心還是那句話,怎么權(quán)衡要看具體的業(yè)務(wù)場(chǎng)景的,技術(shù)脫離了業(yè)務(wù)場(chǎng)景就沒(méi)意義了
2017年8月28日 10:13