首先表明一下身份,本人是Android前端開發人員,本篇只做合理性探討,不進行人身攻擊; 其次希望各位大神進行點評!點評!點評! 我們討論一下介面的兩種返回方式,直接舉例說明一下,假設書籍信息表有30個欄位,現在有各種排行榜和列表都需要顯示書籍基本信息,但顯示的屬性一般會有5-8個左右,各個排行榜顯 ...
首先表明一下身份,本人是Android前端開發人員,本篇只做合理性探討,不進行人身攻擊;
其次希望各位大神進行點評!點評!點評!
我們討論一下介面的兩種返回方式,直接舉例說明一下,假設書籍信息表有30個欄位,現在有各種排行榜和列表都需要顯示書籍基本信息,但顯示的屬性一般會有5-8個左右,各個排行榜顯示的欄位內容有可能不一樣,每個版本顯示的屬性也可能不一樣,那麼問題來了,是每次排行榜和列表都返回所有的30個欄位還是每次按需返回相關欄位呢?
方案一:每次列表和排行榜都返回所有欄位
優點:介面穩定,不需要每次升級增加或修改欄位
缺點:欄位冗餘,消耗流量
方案二:按需返回相關欄位
優點:減少冗餘欄位,數據不亂,結構清晰
缺點:升級版本或需求改變的時候介面需要作對應調整
我個人趨向於採用第二種方式,原因就是方案二的優點比較適合移動端開發規範,而針對於方案二的缺點,我建議伺服器端建立按欄位返回內容的框架,舉例說明A排行榜需要BookId,BookName,BookScroe,另一個排行榜B需要返回BookId,BookName,BookDesc,那麼後端實現邏輯可簡寫為:
Public object getA_List() //獲取排行榜A
{
Return getBookInfo(new String[]{BookId, BookName, BookScroe});
}
Public object getB_List() //獲取排行榜B
{
Return getBookInfo(new String[]{BookId, BookName, BookScroe});
}
Public object getBookInfo (String[] m_Param) //統一獲取書籍信息的方法
{
//實現邏輯
}
同理、同一個排行榜A升級版本只需做分支判斷就好了;
另外這個getBookInfo(String[] m_Param)在伺服器端定義完後,是否客戶端根據每次變化,調用getA_List()方法的時候把需要的後臺欄位,,比如後臺定義方法如下:
Public object getA_List(String[] m_Param) //獲取排行榜A
{
Return getBookInfo(m_Param);
}
那麼後端介面就相對穩定,而前臺也可以靈活地根據需要的欄位來進行獲取了?
我個人意見呢依然是讓伺服器端來處理這類邏輯,理由:
1、 我們需要做的客戶端儘量是瘦客戶端;
2、 前臺人員不需要關註後臺數據表的結構設計,能夠快速地進行效果和流暢度的開發,也就是說前端和後端應該是透明的;
3、 考慮到安全性問題,因為如果前端傳遞參數的話後臺資料庫的結構表都暴露出來了。
最後,還是希望各位大神不吝賜教!