Asp.net Web API实战
? ? ? 工作中需要暴露一些功能,或者說API供其他系統(tǒng)調(diào)用,其他系統(tǒng)可能是Winform,WPF,Asp.net或者是Mobile客戶端。當(dāng)然可以用Web Service或是WCF來實(shí)現(xiàn),但是自己偏向于嘗試新的東西,于是,就打算用Asp.net Web API來實(shí)現(xiàn),也來體驗(yàn)一把RESTFull框架。初次使用,把大體過程記錄下來,美名曰“實(shí)戰(zhàn)”,實(shí)際算是入門指導(dǎo)吧。
? ? ??Asp.net Web API是通過Http協(xié)議將API暴露給客戶端,很多東西與ASp.net MVC很相似,其實(shí)她本身就包含在Asp.net Mvc 4里面的。下面開始實(shí)戰(zhàn):
安裝Asp.net Mvc 4,從這里安裝:http://www.asp.net/mvc/mvc4。安裝時(shí)間大概半小時(shí)的樣子。支持VS 2010學(xué)習(xí)版。
新建項(xiàng)目,選擇“Asp.net MVC 4 Web Application”項(xiàng)目類型,然后選擇Web API:
?
3. 重點(diǎn)看一下Controller下面的ValuesController類,這個(gè)類暴露了以下API:
public class ValuesController : ApiController{// GET api/valuespublic IEnumerable<string> Get(){return new string[] { "value1", "value2" };}// GET api/values/5public string Get(int id){return "value";}// POST api/valuespublic void Post(string value){}// PUT api/values/5public void Put(int id, string value){}// DELETE api/values/5public void Delete(int id){}}熟悉http協(xié)議的話,上面的很好懂了。F5運(yùn)行,我用Chrome瀏覽器測試:
這里返回的是xml格式的,這是因?yàn)镃hrome自動(dòng)添加了"Accept:Application/Xml"請(qǐng)求頭(各位如何讓Chrome返回Json呢?)。默認(rèn)返回Json格式。
至于URL是如何路由的,熟悉MVC的應(yīng)該很清楚了。看看App_Start/RouteConfig.cs,當(dāng)然我們可以在這里配置自己的路由。
4. 客戶端如何調(diào)用服務(wù)器端的API:
通常我們使用HttpClient類,可以看看dudu老大寫的HttpClient?+ ASP.NET?Web?API, WCF之外的另一個(gè)選擇
我這里演示如何使用簡單的WebClient來調(diào)用,使用WebClient的原因是:不像HttpClient,它不需要.net framework4.0。
WebClient wc = new WebClient(); wc.Headers.Add("Accept:Application/Json"); //這一行不要,結(jié)果是一樣的 string json = wc.DownloadString("http://localhost:4391/api/values"); var ss= JavaScriptConvert.DeserializeObject<string[]>(json);這里Json解析使用的是第三方Newtonsoft.Json,我用的是很老的版本了。這里下載最新版本。
這個(gè)第三方庫比微軟自帶的都要好用,而且很強(qiáng)大的,同時(shí)支持.net和Sivlerlight,據(jù)說速度是最快的。
Web Api是根據(jù)客戶端的Accept請(qǐng)求頭,自動(dòng)返回相應(yīng)格式的數(shù)據(jù),默認(rèn)是JSON格式。
這里我們只演示了Get,如果用WebClient做Post的話,我簡單試了一下沒成功,post方法的value總是null。Google發(fā)現(xiàn)更好的解決方法是使用RestSharp,他同時(shí)支持.net/mono/silverlight/windowsphone。有時(shí)間研究下。
5. 實(shí)戰(zhàn)結(jié)束。:)
?
總結(jié)
以上是生活随笔為你收集整理的Asp.net Web API实战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 运用PFA的路灯指示牌GUI程序
- 下一篇: JBoss Eclipse IDE