隨着Web技術的發展,如今各類框架,前端的,後端的,數不勝數。全棧工程師的壓力愈來愈大。 PC端,pad端,移動端App(安卓/IOS)的發展,使得先後端一體的開發模式十分笨重。所以,先後端分離是web發展的趨勢,其中,RESTful API是目前先後端分離的最佳實踐,ASP.NET Web API是在.NET Framework上構建RESTful應用程序的理想平臺。Web API應用以下圖所示。前端
ASP.NET Web API是一個框架,能夠輕鬆構建HTTP服務,覆蓋普遍的客戶端,包括瀏覽器和移動設備。 ASP.NET Web API是在.NET Framework上構建RESTful應用程序的理想平臺。其中,RESTful屬於一種設計風格,REST中的GET,POST,PUT DELETE來進行數據的增刪改查,若是開發人員的應用程序符合RESTful原則,則它的服務稱爲"RESTful風格應用服務"。web
ASP.NET Web API核心的消息處理管道獨立於ASP.NET平臺,比Asp.NET MVC設計的管道更爲複雜,功能也更爲強大,支持Web Host和Self Host(任意類型的應用程序,如控制檯、Windows Form應用程序、WPF應用甚至Windows Service)兩種寄宿方式,本文主要介紹第一種方式。Web API整個生命週期以下圖所示。後端
Visual Studio爲咱們提供了專門用於建立ASP.NET Web API應用的項目模板,藉助於此項目模板提供的嚮導,咱們能夠「一鍵式」建立一個完整的ASP.NET Web API項目。在項目建立過程當中,Visual studio會自動爲咱們添加必要的程序集引用和配置,甚至會爲咱們自動生成相關的代碼,總之—句話:這種經過嚮導生成的項目在被建立以後其自己就是—個可執行的應用。筆者在此就不在演示自動建立的過程,重點講解手動搭建,這樣可讓咱們更深刻的瞭解Web API的運行原理。api
在VS2017中,選擇ASP.NET Web 應用程序(.NET Framework),框架選擇.NET Framework4.5,以下圖所示。瀏覽器
選擇空項目,同時去掉MVC及Web API選項,以下圖所示。 框架
右鍵項目,選擇【管理 NuGet 程序包】,搜索WebAPI,選擇Microsoft.Asp.Net.Api,點擊右側【安裝】按鈕,完成安裝,以下圖所示。前後端分離
右鍵項目,添加新建項,選擇全局應用程序類,以下圖所示。函數
global.asax是一個文本文件,它提供全局可用代碼。這些代碼包括應用程序的事件處理程序以及會話事件、方法和靜態變量。有時該文件也被稱爲應用程序文件。打開文件,代碼以下所示,發現該文件包含了Web應用程序入口Application_Start,這和WinForm應用程序的main函數相似。spa
namespace MyWebAPI { public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { } protected void Session_Start(object sender, EventArgs e) { } protected void Application_BeginRequest(object sender, EventArgs e) { } protected void Application_AuthenticateRequest(object sender, EventArgs e) { } protected void Application_Error(object sender, EventArgs e) { } protected void Session_End(object sender, EventArgs e) { } protected void Application_End(object sender, EventArgs e) { } } }
路由系統是請求消息進入ASP.NET Web API 消息處理管道的第一道屏障,其根本目的用於解析URL請求,在後續的系列文章中會詳細講解,這裏就不深刻講解。設計
在Application_Start函數中註冊Web API路由,代碼以下:
protected void Application_Start(object sender, EventArgs e) { GlobalConfiguration.Configuration.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }); }
右鍵項目,添加新建項,選擇Web API控制器類,以下圖所示。
打開ValuesController.cs文件,發現該類直接繼承與ApiController,且包含了GET,POST,PUT DELETE等Action,代碼以下所示,控制器在後續系列文章中會詳細講解,這裏也不過講解。
public class ValuesController : ApiController { // GET api/<controller> public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/<controller>/5 public string Get(int id) { return "value"; } // POST api/<controller> public void Post([FromBody]string value) { } // PUT api/<controller>/5 public void Put(int id, [FromBody]string value) { } // DELETE api/<controller>/5 public void Delete(int id) { } }
運行程序(自動建立IIS服務),在地址欄中輸入http://localhost:52317/api/Values調用了ValuesController中的Get()方法,Google瀏覽顯示的調用結果以下所示。
至此,完成了ASP.NET Web API的基本介紹和手動構建Web API基本框架的詳細步驟。經過此博客讀者能夠更加深刻的認識和了解Web API,文中如有不足之處,還望海涵,博文寫做不易但願多多支持,後續會更新更多內容,感興趣的朋友能夠加關注,歡迎留言交流!