手把手教你如何應(yīng)用WCF中的REST
1:新建WCF服務(wù)應(yīng)用程序,名稱為RestWCF,選擇在新網(wǎng)站中承載.
2:新建實(shí)體類Product,代碼如下:
- [DataContract]
- public class Product
- {
- [DataMember]
- public Guid Id { get; set; }
- [DataMember]
- public String Name { get; set; }
- }
3:新建服務(wù)契約IProductService:
- [ServiceContract]
- public interface 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地址為http://www.rest.com.那么rest服務(wù)的地址就是http://www.rest.com/Product.
OK.上面的契約大致表示
GET-----GetProducts方法。
PUT-----CreateProduct.
POST----UpdateProduct
DELETE---DeleteProduct。
4:新建服務(wù)類:ProductService,實(shí)現(xiàn)服務(wù)接口,代碼如下:
- public class ProductService:IProductService
- {
- public List<Product> GetProducts()
- {
- return new List<Product>()
- {
- new Product(){ Id=Guid.NewGuid(), Name="111"},
- new Product(){ Id=Guid.NewGuid(), Name="222"},
- new Product(){ Id=Guid.NewGuid(), Name="333"},
- };
- }
- public bool CreateProduct(Product product)
- {
- return true;
- }
- public bool UpdateProduct(Product product)
- {
- return true;
- }
- public bool DeleteProduct(Product product)
- {
- return true;
- }
- }
5:新建ProductService.svc文件,代碼如下:
- <%@ ServiceHost Language="C#" Debug="true" Service="RestWCF.ProductService" %>
這里有一點(diǎn)要注意。Service對應(yīng)的是包含類的全部名稱=命名空間+類名.
6:配置web.config文件。
- <system.serviceModel>
- <services>
- <service name="RestWCF.ProductService">
- <endpoint address="" behaviorConfiguration="RestBehavior" binding="webHttpBinding"
- bindingConfiguration="" contract="RestWCF.IProductService" />
- </service>
- </services>
- <behaviors>
- <endpointBehaviors>
- <behavior name="RestBehavior">
- <webHttp helpEnabled="true" defaultBodyStyle="Bare" defaultOutgoingResponseFormat="Json" />
- </behavior>
- </endpointBehaviors>
- <serviceBehaviors>
- <behavior name="">
- <serviceMetadata httpGetEnabled="true" />
- <serviceDebug includeExceptionDetailInFaults="false" />
- </behavior>
- </serviceBehaviors>
- </behaviors>
- <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
- </system.serviceModel>
在這里因?yàn)橐渲肦est服務(wù),所以我們添加webHttp Behavior,并且啟用helpEnabled.在這里我們設(shè)置defaultBodyStyle="Bare"代表不包裝。
defaultOutgoingResonseFormat="Json",則代表默認(rèn)輸出的格式是json,如果不設(shè)置的話,默認(rèn)是xml。
7:在瀏覽器中瀏覽,因?yàn)槲覀儐⒂昧薍elpEnabled.所以我們輸入的地址是:
8:OK,服務(wù)我們已經(jīng)配置完成了,我們還是測試下吧,打開fiddler.
結(jié)果如下:
在這里我們提交下POST請求。
下回我們將使用Silverlight來調(diào)用Get,Post,Put,Delete的Rest服務(wù)。
oh,我忘記了,這些全部是大寫,所以你***記住GET,POST,PUT,DELETE.
原文鏈接:http://www.cnblogs.com/LoveJenny/archive/2011/04/27/2028705.html






