WebAPI 是徹底基於RESTful標準的(HTTP協議), WCF和WebService(SOAP協議)web
那麼什麼是RESTfuljson
RESTful是面向資源,一個地址表明一個資源。api
http://www.demo.com/student 能夠表明學生的資源瀏覽器
http://www.demo.com/student/張三 能夠表明一個叫張三學生的資源app
WebAPI就是實現RESTful這個思想的一個框架,創建一個HTTP服務能夠被各類客戶端(例如:瀏覽器,智能手機終端,桌面客戶端等)來調用的框架。它並非ASP.NET MVC框架的一部分,它做爲ASP.NET平臺的一部分能夠用於MVC,Web Form或者是做爲一個獨立的服務存在。框架
下面咱們來構建一個最簡單的webAPI工具
首先新建一個空的web應用程序測試
用神器NuGet下載webAPI程序包spa
建立一個實體類做爲數據源code
1 using System; 2 using System.Collections; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Web; 6 namespace WebAPI.Models 7 { 8 public class Students 9 { 10 public int Id { get; set; } 11 public string Name { get; set; } 12 public int Age { get; set; } 13 public static IList<Students> StudentsStorage = new List<Students> 14 { 15 new Students {Id = 1, Name = "張三", Age = 20}, 16 new Students {Id = 2, Name = "李四", Age = 21}, 17 new Students {Id = 3, Name = "王五", Age = 22}, 18 }; 19 } 20 }
新建一個StudentsController類使得它繼承ApiController
1 using System; 2 using System.Collections; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Web; 6 using System.Web.Http; 7 using WebAPI.Models; 8 namespace WebAPI.Cotntrollers 9 { 10 public class StudentsController:ApiController 11 { 12 //Get:/Students 13 public IEnumerable<Students> Get() 14 { 15 return Students.StudentsStorage; 16 } 17 //Get:/Students/2 18 public Students Get(int item) 19 { 20 return Students.StudentsStorage.FirstOrDefault(s => s.Id.Equals(item)); 21 } 22 //POST:/Students 23 public void Post(Students model) 24 { 25 Students.StudentsStorage.Add(model); 26 } 27 //Put:/Students 28 public void Put(int item, Students model) 29 { 30 var exitst = Students.StudentsStorage.FirstOrDefault(s => s.Id.Equals(item)); 31 if (exitst != null) 32 { 33 model.Id = exitst.Id; 34 35 } 36 Students.StudentsStorage.Remove(exitst); 37 Students.StudentsStorage.Add(model); 38 } 39 //DElETE:student/1 40 public void Delete(int item) 41 { 42 var exitst = Students.StudentsStorage.FirstOrDefault(s => s.Id.Equals(item)); 43 Students.StudentsStorage.Remove(exitst); 44 } 45 } 46 }
新建一個Global.asax 配置WebAPI路由
1 protected void Application_Start(object sender, EventArgs e) 2 { 3 //WebAPI路由 4 GlobalConfiguration.Configuration.Routes.MapHttpRoute( 5 "default_api", 6 "{controller}/{item}", 7 defaults: new { item = RouteParameter.Optional }); 8 }
那麼好了一個最簡單的WebAPI就行了 下面咱們來測試一下這個WebAPI
爲何的到的是XML咱們來看一下
從這能夠看到咱們發送的Content-Type 是 appliction/xml
那咱們若是須要Json格式的數據 怎麼辦 其實就是把請求的Content-Type改爲appliction/json 咱們就能夠拿到json格式的數據
還有經過這個工具咱們能夠測試咱們剛剛寫的WebAPI GET POST PUT DELETE方法