JSON

手把手教你如何应用WCF中的REST

字号+ 作者:H5之家 来源:H5之家 2017-02-19 12:02 我要评论( )

1:新建WCF服务应用程序,名称为RestWCF,选择在新网站中承载. 2:新建实体类Product,代码如下: [DataContract] publicclassProduct { [DataMember] publicGuidI

1:新建WCF服务应用程序,名称为RestWCF,选择在新网站中承载.

2:新建实体类Product,代码如下:

[DataContract]
public class Product
{
[DataMember]
public Guid Id { get; set; }

[DataMember]
public String Name { get; set; }
}

3:新建服务契约IProductService:

[ServiceContract]
publicinterface IProductService
{
[OperationContract]
[WebGet(UriTemplate="Product")]
List<Product> GetProducts();

[OperationContract]
[WebInvoke(UriTemplate="Product",Method="PUT")]
bool CreateProduct(Product product);

[OperationContract]
[WebInvoke(UriTemplate = "Product", Method = "POST")]
bool UpdateProduct(Product product);

[OperationContract]
[WebInvoke(UriTemplate = "Product", Method = "DELETE")]
bool DeleteProduct(Product product);
}

注意的是这里都是一些CRUD操作,但是除了OperationContract修饰外,还有WebGet,WebInvoke特性来修饰。

UriTemplate就是Uri模版的意思,如果web地址为那么rest服务的地址就是

OK.上面的契约大致表示

GET-----GetProducts方法。

PUT-----CreateProduct.

POST----UpdateProduct

DELETE---DeleteProduct。

4:新建服务类:ProductService,实现服务接口,代码如下:

publicclass ProductService:IProductService
{
public List<Product> GetProducts()
{
returnnew List<Product>()
{
new Product(){ Id=Guid.NewGuid(), Name="111"},
new Product(){ Id=Guid.NewGuid(), Name="222"},
new Product(){ Id=Guid.NewGuid(), Name="333"},
};
}

publicbool CreateProduct(Product product)
{
returntrue;
}

publicbool UpdateProduct(Product product)
{
returntrue;
}

publicbool DeleteProduct(Product product)
{
returntrue;
}
}

当然了,实际上肯定是数据库操作,在这里我们就先Mock一下吧。

5:新建ProductService.svc文件,代码如下:

<%@ ServiceHost Language="C#"Debug="true"Service="RestWCF.ProductService" %>

这里有一点要注意。Service对应的是包含类的全部名称=命名空间+类名.

6:配置web.config文件。

<system.serviceModel>
<services>
<servicename="RestWCF.ProductService">
<endpointaddress=""behaviorConfiguration="RestBehavior"binding="webHttpBinding"
bindingConfiguration=""contract="RestWCF.IProductService"/>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behaviorname="RestBehavior">
<webHttphelpEnabled="true"defaultBodyStyle="Bare"defaultOutgoingResponseFormat="Json"/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behaviorname="">
<serviceMetadatahttpGetEnabled="true"/>
<serviceDebugincludeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironmentmultipleSiteBindingsEnabled="true"/>
</system.serviceModel>

在这里因为要配置Rest服务,所以我们添加webHttp Behavior,并且启用helpEnabled.在这里我们设置defaultBodyStyle="Bare"代表不包装。

defaultOutgoingResonseFormat="Json",则代表默认输出的格式是json,如果不设置的话,默认是xml。

7:在浏览器中浏览,因为我们启用了HelpEnabled.所以我们输入的地址是:

8:OK,服务我们已经配置完成了,我们还是测试下吧,打开fiddler.

结果如下:

在这里我们提交下POST请求。

下回我们将使用Silverlight来调用Get,Post,Put,Delete的Rest服务。

oh,我忘记了,这些全部是大写,所以你最好记住GET,POST,PUT,DELETE.

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 如何在php中正确的使用json

    如何在php中正确的使用json

    2017-02-15 16:03

  • 【笔记】教你快速搞定Qt下的Json文件使用

    【笔记】教你快速搞定Qt下的Json文件使用

    2017-02-08 18:00

  • asp.net第二章:如何让webservice跨平台的时候不返回XML字符串

    asp.net第二章:如何让webservice跨平台的时候不返回XML字符串

    2017-02-06 15:00

  • 如何获取json对象中的特定值?

    如何获取json对象中的特定值?

    2017-02-02 14:01

网友点评
e