本系列目录:ASP.NET MVC4入门到精通系列目录汇总
微软有了Webservice和WCF,为什么还要有WebAPI?
用过WCF的人应该都清楚,面对那一大堆复杂的配置文件,有时候一出问题,真的会叫人抓狂。而且供不同的客户端调用不是很方便。不得不承认WCF的功能确实非常强大,可是有时候我们通常不需要那么复杂的功能,只需要简单的仅通过使用Http或Https来调用的增删改查功能,这时,WebAPI应运而生。那么什么时候考虑使用WebAPI呢?
当你遇到以下这些情况的时候,就可以考虑使用Web API了。
- 需要Web Service但是不需要SOAP
- 需要在已有的WCF服务基础上建立non-soap-based http服务
- 只想发布一些简单的Http服务,不想使用相对复杂的WCF配置
- 发布的服务可能会被带宽受限的设备访问
- 希望使用开源框架,关键时候可以自己调试或者自定义一下框架
熟悉MVC的朋友你可能会觉得Web API 与MVC很类似。
Demo
1、新建项目,WebApi
2、新建类Product
public class Product { public int Id { get; set; } public string Name { get; set; } public string Category { get; set; } public decimal Price { get; set; } }
3、新建控制器Products,为了演示,我这里不连接数据库,直接代码中构造假数据
using System.Net.Http;
using System.Web.Http;
public class ProductsController : ApiController { Product[] products = new Product[] { new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } }; public IEnumerable<Product> GetAllProducts() { return products; } public IHttpActionResult GetProduct(int id) { var product = products.FirstOrDefault((p) => p.Id == id); if (product == null) { return NotFound(); } return Ok(product); } }
4、新建Index.html来测试WebAPI的调用,代码如下:
运行结果如下:
WebAPI授权
1、新建授权过滤器类APIAuthorizeAttribute.cs
2、添加验证方法类APIAuthorizeInfoValidate.cs
3、把添加到全局过滤器中,这里要注意了,不要添加到FilterConfig.cs,而要添加到WebApiConfig.cs,因为FilterConfig是MVC用的,我们这里是WebAPI。
public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); config.Filters.Add(new APIAuthorizeAttribute()); } }
使用C#来调用WebAPI
以下用到的几个类,已经被我封装好了,可以直接使用。
1、新建webAPI站点,然后新建控制器RProducts
public class RProductsController : ApiController { /// <summary> /// 备案商品回执记录回调接口 /// </summary> /// <param name="lst"></param> /// <returns></returns> public int Put(List<RProduct> lst) { return ReceiptInfo.UpdateReceiptProductInfo(lst); } }
2、新建类WebApiClient.cs
3、新建类BaseEntity.cs
4、调用代码:
List<EProducts> list = DBHelper.Entitys.EProducts.GetAllBySource();
在调用WebAPI之前,记得先运行WebAPI站点。
当我们的WebAPI站点开发完成之后,我们可以使用Nuget安装一个插件自动生成API文档,这个插件同时还支持WebAPI在线测试的。
本文转自邹琼俊博客园博客,原文链接:http://www.cnblogs.com/jiekzou/p/4928940.html,如需转载请自行联系原作者