3、集合和分頁的處理
在很多接口里面,我們都需要用到分頁的處理,Web API也不例外,這樣可以提交數據檢索效率,減少服務器數據處理的壓力,同時也提交客戶端的數據顯示速度。
一般的集合接口定義如下所示(通用性基類接口)。
/// 《summary》
/// 返回數據庫所有的對象集合
/// 《/summary》
/// 《returns》指定對象的集合《/returns》
[HttpGet]
public virtual List《T》 GetAll(string token)
{
//檢查用戶是否有權限,否則拋出MyDenyAccessException異常
base.CheckAuthorized(AuthorizeKey.ListKey, token);
List《T》 list = baseBLL.GetAll();
return list;
}
但是這樣的返回記錄會比較多,一般情況下需要分頁,那么分頁的處理接口定義如下所示。
/// 《summary》
/// 根據條件查詢數據庫,并返回對象集合(用于分頁數據顯示)
/// 《/summary》
/// 《returns》指定對象的集合《/returns》
[HttpPost]
public virtual PagedList《T》 FindWithPager(string condition, PagerInfo pagerInfo, string token)
分頁接口,在這里返回的結果里面,用了一個PageList的泛型類,這個方便我們獲取當前的記錄及總數,它的定義如下所示。
/// 《summary》
/// 分頁集合
/// 《/summary》
/// 《typeparam name=“T”》對象《/typeparam》
public class PagedList《T》
{
/// 《summary》
/// 返回記錄的總數
/// 《/summary》
public int total_count { get; set; }
/// 《summary》
/// 列表集合
/// 《/summary》
public List《T》 list { get; set; }
}
最后整個分頁的處理Web API接口實現如下所示。
/// 《summary》
/// 根據條件查詢數據庫,并返回對象集合(用于分頁數據顯示)
/// 《/summary》
/// 《returns》指定對象的集合《/returns》
[HttpPost]
public virtual PagedList《T》 FindWithPager(string condition, PagerInfo pagerInfo, string token)
{
//檢查用戶是否有權限,否則拋出MyDenyAccessException異常
base.CheckAuthorized(AuthorizeKey.ListKey, token);
List《T》 list = baseBLL.FindWithPager(condition, pagerInfo);
//構造成Json的格式傳遞
var result = new PagedList《T》() { total_count = pagerInfo.RecordCount, list = list };
return result;
}
最后客戶端調用分頁的Web API代碼如下所示。
/// 《summary》
/// 根據條件查詢數據庫,并返回對象集合(用于分頁數據顯示)
/// 《/summary》
/// 《param name=“condition”》查詢的條件《/param》
/// 《param name=“pagerInfo”》分頁實體《/param》
/// 《returns》指定對象的集合《/returns》
public virtual List《T》 FindWithPager(string condition, ref PagerInfo pagerInfo)
{
var action = “FindWithPager”;
string url = GetTokenUrl(action) + string.Format(“&condition={0}”, condition);
var postData = pagerInfo.ToJson();
List《T》 result = new List《T》();
PagedList《T》 list = JsonHelper《PagedList《T》》.ConvertJson(url, postData);
if (list != null)
{
pagerInfo.RecordCount = list.total_count;//修改總記錄數
result = list.list;
}
return result;
}
4、混合框架界面整合Web API接口
在整個Web API的平臺構建以及在混合框架的整合過程中,我把各個模塊還是遵循相對獨立的方式進行開發和整合,它們實現了從直接訪問數據庫、以WCF服務獲取數據,以及通過WebAPI調用方式獲取數據幾種方式的統一,從而實現了整個混合框架的高度整合。
整個混合框架的核心是以相對獨立的方式,整合各個可重用的模塊,我們可以遵循一定的基礎上,快速構建統一的應用平臺。
?
搭建完畢的整個WebAPI平臺,其中包括了服務端內容,以API控制器的方式,發布了對應的Web API接口。
在每個混合框架的獨立模塊里面,我們封裝了對應的Web API客戶端調用處理,從而實現了Web API的調用方式。
在Win10下,使用Web API模式運行混合框架,獲得的主體界面效果如下所示。
獨立模塊權限管理系統界面如下所示。
評論