Asp.net Web API實戰


      工作中需要暴露一些功能,或者說API供其他系統調用,其他系統可能是Winform,WPF,Asp.net或者是Mobile客戶端。當然可以用Web Service或是WCF來實現,但是自己偏向於嘗試新的東西,於是,就打算用Asp.net Web API來實現,也來體驗一把RESTFull框架。初次使用,把大體過程記錄下來,美名曰“實戰”,實際算是入門指導吧。

      Asp.net Web API是通過Http協議將API暴露給客戶端,很多東西與ASp.net MVC很相似,其實她本身就包含在Asp.net Mvc 4里面的。下面開始實戰:

  1. 安裝Asp.net Mvc 4,從這里安裝:http://www.asp.net/mvc/mvc4。安裝時間大概半小時的樣子。支持VS 2010學習版。

  2. 新建項目,選擇“Asp.net MVC 4 Web Application”項目類型,然后選擇Web API:

 

  3. 重點看一下Controller下面的ValuesController類,這個類暴露了以下API:

public class ValuesController : ApiController
    {
        // GET api/values
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        public string Get(int id)
        {
            return "value";
        }

        // POST api/values
        public void Post(string value)
        {
        }

        // PUT api/values/5
        public void Put(int id, string value)
        {
        }

        // DELETE api/values/5
        public void Delete(int id)
        {
        }
    }

熟悉http協議的話,上面的很好懂了。F5運行,我用Chrome瀏覽器測試:

這里返回的是xml格式的,這是因為Chrome自動添加了"Accept:Application/Xml"請求頭(各位如何讓Chrome返回Json呢?)。默認返回Json格式。

至於URL是如何路由的,熟悉MVC的應該很清楚了。看看App_Start/RouteConfig.cs,當然我們可以在這里配置自己的路由。

  4. 客戶端如何調用服務器端的API:

通常我們使用HttpClient類,可以看看dudu老大寫的HttpClient + ASP.NET Web API, WCF之外的另一個選擇

我這里演示如何使用簡單的WebClient來調用,使用WebClient的原因是:不像HttpClient,它不需要.net framework4.0。

WebClient wc = new WebClient();
wc.Headers.Add("Accept:Application/Json"); //這一行不要,結果是一樣的
string json = wc.DownloadString("http://localhost:4391/api/values");
var ss= JavaScriptConvert.DeserializeObject<string[]>(json);

這里Json解析使用的是第三方Newtonsoft.Json,我用的是很老的版本了。這里下載最新版本。

這個第三方庫比微軟自帶的都要好用,而且很強大的,同時支持.net和Sivlerlight,據說速度是最快的。

Web Api是根據客戶端的Accept請求頭,自動返回相應格式的數據,默認是JSON格式。

  這里我們只演示了Get,如果用WebClient做Post的話,我簡單試了一下沒成功,post方法的value總是null。Google發現更好的解決方法是使用RestSharp,他同時支持.net/mono/silverlight/windowsphone。有時間研究下。

  5. 實戰結束。:)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM