【IT168 技术】REST定义了应该如何正确地使用(这和大多数人的实际使用方式有很大不同)Web标准,例如HTTP和URI。如果你在设计应用程序时能坚持REST原则,那就预示着你将会得到一个使用了优质Web架构(这将让你受益)的系统。下面就让我们来详细了解一下:
1:新建WCF服务应用程序,名称为RestWCF,选择在新网站中承载.
2:新建实体类Product,代码如下:
[DataContract]
public class Product
{
[DataMember]
public Guid Id { get; set; }
[DataMember]
public String Name { get; set; }
}
public class Product
{
[DataMember]
public Guid Id { get; set; }
[DataMember]
public String Name { get; set; }
}
3:新建服务契约IProductService:
[ServiceContract]
public interface IProductService
{
[OperationContract]
[WebGet(UriTemplate="Product")]
List 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);
}
public interface IProductService
{
[OperationContract]
[WebGet(UriTemplate="Product")]
List 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服务的地址就是http://www.rest.com/Product.
OK.上面的契约大致表示:
GET-----GetProducts方法。
PUT-----CreateProduct.
POST----UpdateProduct
DELETE---DeleteProduct。
4:新建服务类:ProductService,实现服务接口,代码如下:
public class ProductService:IProductService
{
public List GetProducts()
{
return new List()
{
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;
}
}
{
public List GetProducts()
{
return new List()
{
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;
}
}
当然了,实际上肯定是数据库操作,在这里我们就先Mock一下吧。