記錄一下 這周研究 api相關知識,主要介紹 api 分類、創建、調用。特別感謝網上同仁提供的資料。
關於 web api 分類:
wcf web api 和 asp.net web api , 2012年2月 微軟已宣布 WCF和ASP.NET 團隊合並,把WCF Web API的內容並入了ASP.NET Web API。
(詳見:http://www.cnblogs.com/shanyou/archive/2012/03/11/2390672.html)
關於 web api 創建:
研發環境配置:
首先需要安裝了ASP.NET MVC 4的 Visual Studio 。下面的用哪個都行:
- Visual Studio 2012
- Visual Studio 2010 且已安裝 ASP.NET MVC 4。(需要安裝vssp1補丁,耗時較長)
下面使用vs2010 為例,具體操作步驟:
第一:創建項目,選擇 mvc4 web 應用程序
第二:在彈出的“新 ASP.NET MVC 4 項目”對話框中,選擇“Web API”然后點“確定”。
第三:當你創建完項目以后,”新建項目“向導就自動創建了2個控制器。在解決方案資源管理器里展開”Controllers“目錄就能看到了。
- HomeController 是一個傳統的 ASP.NET MVC 控制器。它只是負責處理站點的HTML頁,跟Web API沒有直接關系。
- ValuesController 是一個示例 WebAPI 控制器。
解決方案資源管理里,右擊 Controllers 目錄,選擇”添加“,”控制器“:並且選擇控制器模版類型,如圖:
第四:
控制器定義了三個方法,要么返回單個商品,要么返回一組產品:
- GetAllProducts 方法返回所有的產品,返回類型為 IEnumerable<Product> 。
- GetProductById 方法通過ID查詢某個產品。
ok!web API已經能用了。每一個控制器上的方法都對應了一個URI:
關於 web api 調用:
第一種:從瀏覽器中訪問WEB API
如:http://localhost:xxxx/api/products/. (將 "xxxx" 替換為真實的端口號)
第二種:用JavaScript和jQuery調用 Web API(注意:有時候 $ 識別需替換成JQuery)
(詳見:http://tech.it168.com/a2012/0606/1357/000001357231_all.shtml)
在jQuery中,使用 JSONP 跨越數據傳輸方式, 通過$.getJSON的方法獲取服務器端數據。調用WEB API,代碼如下:

1 <script type="text/javascript"> 2 3 $(document).ready(function () { 4 5 // Send an AJAX request 6 7 $.getJSON("api/products/", 8 9 function (data) { 10 11 // On success, 'data' contains a list of products. 12 13 $.each(data, function (key, val) { 14 15 16 17 // Format the text to display. 18 19 var str = val.Name + ': $' + val.Price; 20 21 22 23 // Add a list item for the product. 24 25 $('<li/>', { text: str }) 26 27 .appendTo($('#products')); 28 29 }); 30 31 }); 32 33 }); 34 35 </script>
實例一 經常使用的傳統方式。

1 $(document).ready(function () { 2 3 $.getJSON("api/customers", Loadfun); 4 5 }); 6 7 $.getJson方法中第一個參數是調用服務的地址,第二個參數是回調方法,這個回調方法Loadfun中,將展示服務端web api返回的數據,代碼如下: 8 9 function Loadfun(data) { 10 $("#customerTable").find("tr:gt(1)").remove(); 11 $.each(data, function (key, val) { 12 var tableRow = '<tr>' + 13 '<td>' + val.CustomerID + '</td>' + 14 '<td><input type="text" value="' + val.CompanyName + '"/></td>' + 15 '<td><input type="text" value="' + val.ContactName + '"/></td>' + 16 '<td><input type="text" value="' + val.Country + '"/></td>' + 17 '<td><input type="button" name="btnUpdate" value="Update" /> 18 <input type="button" name="btnDelete" value="Delete" /></td>' + 19 '</tr>'; 20 $('#customerTable').append(tableRow); 21 }); 22 23 $("input[name='btnInsert']").click(OnInsert); 24 $("input[name='btnUpdate']").click(OnUpdate); 25 $("input[name='btnDelete']").click(OnDelete); 26 }
實例二 中我們可以拼接html,給某個按鈕注冊事件,如同操作普通html一樣。
總結:研究的時候,需要耐心去查詢文獻,必須耐心,當沒有線索的時候,再堅持一下,也許奇跡就出現了。