1.導言
隨着Web技術的發展,現在各種框架,前端的,后端的,數不勝數。全棧工程師的壓力越來越大。 PC端,pad端,移動端App(安卓/IOS)的發展,使得前后端一體的開發模式十分笨重。因此,前后端分離是web發展的趨勢,其中,RESTful API是目前前后端分離的最佳實踐,ASP.NET Web API是在.NET Framework上構建RESTful應用程序的理想平台。Web API應用如下圖所示。
2.ASP.NET Web API介紹
ASP.NET Web API是一個框架,可以輕松構建HTTP服務,覆蓋廣泛的客戶端,包括瀏覽器和移動設備。 ASP.NET Web API是在.NET Framework上構建RESTful應用程序的理想平台。其中,RESTful屬於一種設計風格,REST中的GET,POST,PUT DELETE來進行數據的增刪改查,如果開發人員的應用程序符合RESTful原則,則它的服務稱為"RESTful風格應用服務"。
ASP.NET Web API核心的消息處理管道獨立於ASP.NET平台,比Asp.NET MVC設計的管道更為復雜,功能也更為強大,支持Web Host和Self Host(任意類型的應用程序,如控制台、Windows Form應用程序、WPF應用甚至Windows Service)兩種寄宿方式,本文主要介紹第一種方式。Web API整個生命周期如下圖所示。
3.手動搭建基本框架
Visual Studio為我們提供了專門用於創建ASP.NET Web API應用的項目模板,借助於此項目模板提供的向導,我們可以“一鍵式”創建一個完整的ASP.NET Web API項目。在項目創建過程中,Visual studio會自動為我們添加必要的程序集引用和配置,甚至會為我們自動生成相關的代碼,總之—句話:這種通過向導生成的項目在被創建之后其本身就是—個可執行的應用。筆者在此就不在演示自動創建的過程,重點講解手動搭建,這樣可以讓我們更深入的了解Web API的運行原理。
(1)創建空的ASP.NET Web 應用程序
在VS2017中,選擇ASP.NET Web 應用程序(.NET Framework),框架選擇.NET Framework4.5,如下圖所示。
選擇空項目,同時去掉MVC及Web API選項,如下圖所示。
(2)通過NuGet下載安裝Microsoft.Asp.Net.Api
右鍵項目,選擇【管理 NuGet 程序包】,搜索WebAPI,選擇Microsoft.Asp.Net.Api,點擊右側【安裝】按鈕,完成安裝,如下圖所示。
(3)添加全局應用程序類Global.asax
右鍵項目,添加新建項,選擇全局應用程序類,如下圖所示。
global.asax是一個文本文件,它提供全局可用代碼。這些代碼包括應用程序的事件處理程序以及會話事件、方法和靜態變量。有時該文件也被稱為應用程序文件。打開文件,代碼如下所示,發現該文件包含了Web應用程序入口Application_Start,這和WinForm應用程序的main函數類似。
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) { } } }
(4)注冊Web API路由
路由系統是請求消息進入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 }); }
(5)添加Web API控制器
右鍵項目,添加新建項,選擇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) { } }
(6)調用Web API
運行程序(自動創建IIS服務),在地址欄中輸入http://localhost:52317/api/Values調用了ValuesController中的Get()方法,Google瀏覽顯示的調用結果如下所示。
4.總結
至此,完成了ASP.NET Web API的基本介紹和手動構建Web API基本框架的詳細步驟。通過此博客讀者可以更加深入的認識和了解Web API,文中若有不足之處,還望海涵,博文寫作不易希望多多支持,后續會更新更多內容,感興趣的朋友可以加關注,歡迎留言交流!