ASP.NET Web API 2系列(一):初識Web API及手動搭建基本框架


 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,文中若有不足之處,還望海涵,博文寫作不易希望多多支持,后續會更新更多內容,感興趣的朋友可以加關注,歡迎留言交流!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM