一、WebApi是什么
二、与其类似的技术
ASP.NET Web Services(ASP.NET Web服务)
Windows Communication Foundation(Windows通信基础 — WCF)
三、WebApi的简单应用
打开VS2013,新建项目->
选择WEB API
结果如下
Models中添加一个类,命名为Product
代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MvcApplication1.Models { public class Product { public int Id { get; set; } public string Name { get; set; } public string Category { get; set; } public decimal Price { get; set; } } }
在Controllers中右键 添加一个控制器,在弹出的画面中,给控制器重命名,WebApiController,然后在模板中选择空Api控制
添加代码
using MvcApplication1.Models; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; namespace MvcApplication1.Controllers { public class WebApiController : ApiController { Product[] products = new Product[]{ new Product{Id=1,Name="农夫山泉",Category="water",Price=2}, new Product{Id=2,Name="钢笔",Category="study",Price=3.75M}, new Product{Id=3,Name="烤肠",Category="food",Price=1}, new Product{Id=4,Name="崂山矿泉水",Category="water",Price=2}, new Product{Id=5,Name="铅笔",Category="study",Price=3.75M}, new Product{Id=6,Name="烤羊肉",Category="food",Price=1}, }; public IEnumerable<Product> GetAllProducts() { return products; } public Product GetProductById(int id) { var product = products.FirstOrDefault((p) => p.Id == id); if (product == null) { throw new HttpResponseException(HttpStatusCode.NotFound); } return product; } public IEnumerable<Product> GetProductsByCategory(string categroy) { return products.Where((p) => string.Equals(p.Category, categroy, StringComparison.OrdinalIgnoreCase)); } } }
重新生成解决方案后,显示如下图,这是一个ASP.NET MVC视图,它是由HomeControllers类返回的。
可以使用Postman测试工具来进行测试
输入http://localhost:56438/api/webapi 这个url地址是得到所有的products
http://localhost:56438/api/webapi/2 根据id获取product,效果如下