由于我們整個Web API平台是基于MVC的基礎上進行的API開發,是以整個Web API的接口,在定義的時候,一般需要顯示來聲明接口是[HttpGet]或者[HttpPost],雖然有些接口也可以不用聲明,但是避免出現類似下面的錯誤資訊,顯式聲明還是有好處的。
例如在基類定義的查找對象接口如下所示。
如果是增删改的接口,一般需要聲明為POST方式送出資料,而且基于安全性的考慮,需要攜帶更多的參數。
在一般的Web API接口裡面,我們可能都會碰到很多簡單類型的參數,但是又想讓它們以POST方式送出資料,那麼我們就可以有兩種方法來處理,一種是定義一個類來放置這些參數,一種是采用動态的JObject參數,前者有很多不友善的地方,因為我們不可能為每個接口參數定義多一個實體類,這樣可能會有很多難以管理的類定義。如下面是微信API的調用接口案例,我們也需要設定這樣的處理規則。
那麼我們采用JObject是這麼樣的呢,我們來看接口的定義和處理代碼。JObject是Newtonsoft.Json.Linq命名空間下的一個對象。
其中我們把JObject對象轉換為我們所需要的對象的時候,因為我們沒有定義具體的實體類,是以采用了dynamic文法,聲明這是一個動态對象,由運作時擷取對應的屬性。
這樣我們就可以在調用的時候,動态POST對應的JSON對象給Web API接口,而不需要預先定義各種接口參數的類了。
其中GetTokenUrl是根據token和API的位址等參數,建構一個完整的送出位址。我們在上面代碼通過
就可以動态建立一個對象,并生成它的JSON字元串,把資料POST送出到對應的API接口裡面即可,然後對結果進行對象的轉換就算完成了。
在很多接口裡面,我們都需要用到分頁的處理,Web API也不例外,這樣可以送出資料檢索效率,減少伺服器資料處理的壓力,同時也送出用戶端的資料顯示速度。
一般的集合接口定義如下所示(通用性基類接口)。
但是這樣的傳回記錄會比較多,一般情況下需要分頁,那麼分頁的處理接口定義如下所示。
分頁接口,在這裡傳回的結果裡面,用了一個PageList的泛型類,這個友善我們擷取目前的記錄及總數,它的定義如下所示。
最後整個分頁的處理Web API接口實作如下所示。
最後用戶端調用分頁的Web API代碼如下所示。
在整個Web API的平台建構以及在混合架構的整合過程中,我把各個子產品還是遵循相對獨立的方式進行開發和整合,它們實作了從直接通路資料庫、以WCF服務擷取資料,以及通過WebAPI調用方式擷取資料幾種方式的統一,進而實作了整個混合架構的高度整合。

整個混合架構的核心是以相對獨立的方式,整合各個可重用的子產品,我們可以遵循一定的基礎上,快速建構統一的應用平台。
搭建完畢的整個WebAPI平台,其中包括了服務端内容,以API控制器的方式,釋出了對應的Web API接口。
在每個混合架構的獨立子產品裡面,我們封裝了對應的Web API用戶端調用處理,進而實作了Web API的調用方式。
在Win10下,使用Web API模式運作混合架構,獲得的主體界面效果如下所示。
獨立子產品權限管理系統界面如下所示。
系列文章如下所示:
<a href="http://www.cnblogs.com/wuhuacong/p/4838220.html">Web API應用架構在Winform混合架構中的應用(1)</a>
<a href="http://www.cnblogs.com/wuhuacong/p/4843422.html">Web API應用架構在Winform混合架構中的應用(2)--自定義異常結果的處理</a>
<a href="http://www.cnblogs.com/wuhuacong/p/4902950.html">Web API應用架構在Winform混合架構中的應用(3)--Winfrom界面調用WebAPI的過程分解</a>
<a href="http://www.cnblogs.com/wuhuacong/p/4910240.html">Web API應用架構在Winform混合架構中的應用(4)--利用代碼生成工具快速開發整套應用</a>
<a href="http://www.cnblogs.com/wuhuacong/p/4915935.html">Web API應用架構在Winform混合架構中的應用(5)--系統級别字典和公司級别字典并存的處理方式</a>