首先代表一下身份,本人是Android前端開發人員,本篇只作合理性探討,不進行人身攻擊; 前端
其次但願各位大神進行點評!點評!點評! 數據庫
咱們討論一下接口的兩種返回方式,直接舉例說明一下,假設書籍信息表有30個字段,如今有各類排行榜和列表都須要顯示書籍基本信息,但顯示的屬性通常會有5-8個左右,各個排行榜顯示的字段內容有可能不同,每一個版本顯示的屬性也可能不同,那麼問題來了,是每次排行榜和列表都返回全部的30個字段仍是每次按需返回相關字段呢?後端
方案一:每次列表和排行榜都返回全部字段安全
優勢:接口穩定,不須要每次升級增長或修改字段服務器
缺點:字段冗餘,消耗流量框架
方案二:按需返回相關字段spa
優勢:減小冗餘字段,數據不亂,結構清晰設計
缺點:升級版本或需求改變的時候接口須要做對應調整接口
我我的趨向於採用第二種方式,緣由就是方案二的優勢比較適合移動端開發規範,而針對於方案二的缺點,我建議服務器端創建按字段返回內容的框架,舉例說明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);
}
那麼後端接口就相對穩定,而前臺也能夠靈活地根據須要的字段來進行獲取了?
我我的意見呢依然是讓服務器端來處理這類邏輯,理由:
一、 咱們須要作的客戶端儘可能是瘦客戶端;
二、 前臺人員不須要關注後臺數據表的結構設計,可以快速地進行效果和流暢度的開發,也就是說前端和後端應該是透明的;
三、 考慮到安全性問題,由於若是前端傳遞參數的話後臺數據庫的結構表都暴露出來了。
最後,仍是但願各位大神不吝賜教!