工做中须要暴露一些功能,或者说API供其余系统调用,其余系统多是Winform,WPF,Asp.net或者是Mobile客户端。固然能够用Web Service或是WCF来实现,可是本身偏向于尝试新的东西,因而,就打算用Asp.net Web API来实现,也来体验一把RESTFull框架。初次使用,把大致过程记录下来,美名曰“实战”,实际算是入门指导吧。html
Asp.net Web API是经过Http协议将API暴露给客户端,不少东西与ASp.net MVC很类似,其实她自己就包含在Asp.net Mvc 4里面的。下面开始实战:git
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浏览器测试:github
这里返回的是xml格式的,这是由于Chrome自动添加了"Accept:Application/Xml"请求头(各位如何让Chrome返回Json呢?)。默认返回Json格式。web
至于URL是如何路由的,熟悉MVC的应该很清楚了。看看App_Start/RouteConfig.cs,固然咱们能够在这里配置本身的路由。json
一般咱们使用HttpClient类,能够看看dudu老大写的HttpClient + ASP.NET Web API, WCF以外的另外一个选择windows
我这里演示如何使用简单的WebClient来调用,使用WebClient的缘由是:不像HttpClient,它不须要.net framework4.0。api
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格式。mvc
这里咱们只演示了Get,若是用WebClient作Post的话,我简单试了一下没成功,post方法的value老是null。Google发现更好的解决方法是使用RestSharp,他同时支持.net/mono/silverlight/windowsphone。有时间研究下。
原文地址:http://www.cnblogs.com/slmk/archive/2012/08/09/2630691.html