2KB项目,专业的源码交易网站 帮助 收藏 每日签到

简单 5 步创建你的首个 RESTful 服务

  • 时间:2019-01-23 18:39 编辑:2KB 来源:2KB.COM 阅读:376
  • 扫一扫,手机访问
  • 分享
摘要: 英文原文:5 S
英文原文:5 Simple Steps to Create Your First RESTful Service

RESTful 服务遵循REST(Representational State Transfer)的架构风格。

在实现你第一个Restful 服务之前,让我们先理解它的概念。就像我们知道的那样,WCF(Windows通讯接口)让我们能够使用基于一系列协议的SOAP来打电话和交换信息,这些协议包含HTTP,TCP,Named Pipes 和MSMQ等等。在一个脚本中,如果我们使用基于HTTP的SOAP,我们只是把HTTP作为一个运输工具。但是,HTTP并不仅仅是个传输的工具。所以,当我们将RESY架构形式的时候,那就决定了“我们知识简单的使用HTTP来进行通讯,而不是使用一些复杂的机制,像CORBA,RPC或者SOPA,来通讯”。

对于所有的CRUD(Read/Create/Update/Delete),RESTFul架构基于HTTP的简单动作(GET,POST,PUT,And DELETE)来实现。它简单而且轻巧。为了简单一些,我将通过Get请求来实现一个服务,这个服务返回有限的几个类型的XML格式的数据。

跟随下面5个步骤,创建你的第一个返回数据类型XML的RESTful服务。

  • 创建一个WCF工程.
  • 组织要返回的数据(e.g. Prodcut).
  • 创建服务协议
  • 实现服务.
  • 配置服务和行为。

1.创建一个WCF服务功能

  •  打开 Visual Studio.
  •  在File -> New Project 里.  在左侧选择WCF创建一个新的 WCF Service Application.

2. 组织要返回的数据

  • 为新建的工程添加一个类. 命名为 Products.cs.

现在这个类 Products.cs file 包含两个部分. 第一个是数据的定义. 

[DataContract] 
public class Product 
{ 
  [DataMember] 
  public int ProductId { get; set; } 
  [DataMember] 
  public string Name { get; set; } 
  [DataMember] 
  public string CategoryName { get; set; } 
  [DataMember] 
  public int Price { get; set; } 
}

第二部分是这个类的单例实现,它从数据库中获取产品信息让后返回产品列表。为了简单一些,我们在类中组织数据而不是从数据库取得。如下:

public partial class Products
{
  private static readonly Products _instance = new Products(); 
  private Products() { } 
  
  public static Products Instance 
  { 
   get { return products; } 
  } 
  
  private List<Product> products = new List<Product>() 
  { 
    new Product() { ProductId = 1, Name = "Product 1", CategoryName = "Category 1", Price=10}, 
    new Product() { ProductId = 1, Name = "Product 2", CategoryName = "Category 2", Price=5}, 
    new Product() { ProductId = 1, Name = "Product 3", CategoryName = "Category 3", Price=15}, 
    new Product() { ProductId = 1, Name = "Product 4", CategoryName = "Category 1", Price=9} };  }
}

3.创建服务协议

按照下面的内容创建 WCF Service :

项目将增加一个协议以及服务文件下面的代码就是服务协议 i.e. IProductRESTService.cs.

public interface IProductRESTService 
{ 
  [OperationContract]
  [WebInvoke(Method = "GET",ResponseFormat = WebMessageFormat.Xml,
      BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "GetProductList/")] 
  List<Product> GetProductList();
}

IProductRESTServicecontains 只包含一个方法即GetProductList.需要重点了解的是 WebInvoke的属性和参数

  • Method = "GET", 代表HTTP GET 请求.
  • ResponseFormat = WebMessageFormat.Xml, 代表接收下面两个是的内容。但我们可以将值修改为WebMessageFormat.json。来接收就送格式的内容
  • BodyStyle = WebMessageBodyStyle.Wrapped,表明 request和 response 请求将被包装.
  • UriTemplate = "GetProductList/",由两部分。URL路径和查询路径

不要忘记在顶部添加 System.ServiceModel.Webat .

4. 实现 RESTful 

在这个步棸里面我们将实现服务.只有一个方法GetProductListis 在协议的定义中,因此服务类实现如下:

public class ProductRESTService : IProductRESTService 
{ 
  public List<Product> GetProductList() 
  { 
   return Products.Instance.ProductList; 
  } 
}

5. 配置服务与特性

最后一步是用配置文件配置服务和他的操作以及它的特性. 以下是完整的ServiceModel配置。

<system.ServiceModel>
   <services>
     <service name="MyRESTService.ProductRESTService"
              behaviorConfiguration = "serviceBehavior">
       <endpoint address=""
                 binding="webHttpBinding"
                 contract="MyRESTService.IProductRESTService" 
                 behaviorConfiguration="web">
       </endpoint> 
     </service> 
   </services> 
   <behaviors> 
    <serviceBehaviors> 
       <behavior name="serviceBehavior"> 
         <serviceMetadata httpGetEnabled="true"/> 
         <serviceDebug includeExceptionDetailInFaults="false"/> 
       </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
       <behavior name="web"> 
         <webHttp/> 
       </behavior> 
    </endpointBehaviors> 
   </behaviors> 
   <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
</system.serviceModel>       

网站的http协议在 RESTful 服务上绑定

现在创建 RESTful 服务已经完成。你可以简单的运行或者测试一下。

右击ProductRESTService.svc 文件选择 "View in Browser(在浏览器中查看)". 你将看到如下图像。这证明服务已启动。

只需修改浏览器的URl增加上 "GetProductList/". 因此,这是一个 定义 UriTemplete 服务协议的方法.  

希望,这个简单的 WCF教程对读者有所帮助.保持做事的简单性。我仅在获得HTTP get请求的时候获得记录信息。在以后,我将提供使用RESTful 服务所有的 CRUD (增查改删) . 


本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部