1. 程式人生 > >Asp.NET Web API 2系列(一):初識Web API及手動搭建基本框架

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