WCFWebAPI轻松实现REST

先体验一下,如果没有 WCF Web API,直接用 WCF 实现 REST 有多麻烦:

沿河网站建设公司创新互联,沿河网站设计制作,有大型网站制作公司丰富经验。已为沿河千余家提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的沿河做网站的公司定做!

1. 创建 WCF 服务(ServiceContract)。

2. 创建 .svc 文件指向该 WCF 服务。

3. 在 web.config 中添加/  配置,并将 binding 设置为 webHttpBinding,示例配置如下:

 
 
 
  1.  
  2.      
  3.     
  4.                 contract="CNBlogs.OpenAPI.Service.INewsRestService"   
  5.                 behaviorConfiguration="RESTFul" /> 
  6.      
  7.  

4. 在 web.config 中添加 / 配置,并在其中添加,在第3步的配置中添加该behaviorConfiguration(比如上面代码中的behaviorConfiguration="RESTFul"),示例配置如下:

 
 
 
  1.  
  2.      
  3.          
  4.      
  5.  

5. 在 OperationContract 方法上增加 WebInvoke 属性,示例代码如下:

 
 
 
  1. [OperationContract]  
  2. [WebInvoke(Method = "GET",  
  3.     UriTemplate = "News/Recent/{itemcount}",  
  4.     ResponseFormat = WebMessageFormat.Xml)  
  5. ]          
  6. IQueryable GetRecentNews(int itemcount); 

上面的5步已经够麻烦了。开始以为到此就可以收工了,哪知不运行不知道,一运行吓一跳:

 
 
 
  1. Operation 'GetRecentNews' in contract 'INewsRestService' has a path variable named 'itemcount' which does not have type 'string'.    
  2. Variables for UriTemplate path segments must have type 'string'. 

参数竟然不能用int类型,必须要用 string。只能望 WCF 心叹,不得不进入第6步。

6. 将 int 改为 string
 

 
 
 
  1. IQueryable GetRecentNews(string itemcount); 

这是纯 WCF 实现 REST 的表演节目,节目名称叫“ WCF 实现 REST 六步走”,表演得分6分。

接下来,我们看看 WCF Web API 的表演

(如果不知道 WCF Web API 是何方神圣,请看演员介绍http://wcf.codeplex.com/wikipage?title=WCF%20HTTP)

1. 在提供 REST 服务的方法上增加 [WebGet(UriTemplate = "")] 属性,示例代码如下:

 
 
 
  1. [ServiceContract]  
  2. public class NewsRestService  
  3. {  
  4.     [WebGet(UriTemplate = "{itemcount}")]  
  5.     public IQueryable GetRecentNews(int itemcount)  
  6.     {   
  7.         return newsList.AsQueryable();  
  8.     }   

2. 在 Global.asax 的 Application_Start 中添加路由,示例代码如下:

 
 
 
  1. protected void Application_Start(object sender, EventArgs e)  
  2. {  
  3.     var config = new HttpConfiguration() ;  
  4.     RouteTable.Routes.Add(new ServiceRoute("news/recent",  
  5.         new HttpServiceHostFactory { Configuration = config },  
  6.         typeof(NewsRestService)));  

注:需要通过 NuGet 添加对 WebApi.All 的引用。news/recent 就是 REST 访问网址。

收工!只需两步就实现 REST,WCF Web API 的表演得分2分。

2 : 6,WCF Web API 大获全胜!(分数少的怎么反而获胜?这是代码世界,不是现实世界,程序员说了算,谁的代码少,谁就获胜)

小结
WCF Web API 是 “First-class programming model for HTTP in WCF”,而 HTTP 是 Web 世界的通行证,Web API 可以让我们更轻松地畅游于 Web 编程世界。

实现 REST 只是 WCF Web API 小试牛刀,我们还可以不用修改任何服务端代码,只改变客户端请求的方式,就可以返回不现类型的数据。
比如:

1)将 HTTP Header 中的 Accept 改为 “application/json”,返回的就是 JSON 数据。

2)通过 Url 参数发起 OData 查询(比如“?$top=4&$orderby=Title” ),服务器收到请求后,会对返回结果进行 LINQ 查询(因此示例代码中的返回值类型是IQueryable)。

原文:http://www.cnblogs.com/dudu/archive/2011/10/27/wcf_web_api.html

【编辑推荐】

  1. 百度地图API之如何制作公交导航
  2. 走进Windows线程同步API
  3. 谷歌拼音输入法扩展API开发指南
  4. 新浪微博API开发简介之用户授权(PHP基础篇)
  5. 百度地图API开发指南

文章名称:WCFWebAPI轻松实现REST
网站地址:http://www.shufengxianlan.com/qtweb/news12/155662.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联