首先表明一下身份,本人是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、 考慮到安全性問題,因為如果前端傳遞參數的話后台數據庫的結構表都暴露出來了。
最后,還是希望各位大神不吝賜教!