編寫一個webapi框架的開端

零下一度
發布: 2018-05-22 10:40:57
原創
3903 人瀏覽過

    當我們學習到某個程度的時候,我們會想要去深入了解程式碼底層的東西,也更想擁有一個屬於自己的框架,當然,部落客也正是如此。本文可能成為編寫一個webapi框架的開端。有研究MVC框架的朋友會發現,mvc框架的路由MvcRouteHandler是實現了IRouteHandler而得以實現我們路由,而IRouteHandler只需要返回一個對象,那就是IHttpHandler,而IHttphandler正是處理http請求的。欣喜之中,我們發現我們已經擁有了編寫一個webapi最核心的東西,路由以及請求處理。可能這篇系列文章不會特別深刻的去說明這兩個東西具體是什麼,而是專注於使用它們,有興趣的朋友自行了解哦,對理解.net下面的網絡請求處理有很大的幫助。

  話不多說了,直接開始

  我們直接建立一個完全空的asp.net web專案

#  

  不勾選任何東西。

  然後,我們新增一個BaseRouteHandler,繼承自(實作)IRouteHandler,程式碼如下

 public class BaseRouteHandler:IRouteHandler
    {
        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            return new BaseHttpHandler();
        }
    }
登入後複製

  我們看到回傳了一個BaseHttphandler,這是我們自己寫的

  新建一個BaseHttpHandler,實作IHttpHandler,值得注意的是,如果你需要這個Handler能處理session,你只需要繼承IRequiresSessionState,這個介面只是個標記,不需要任何實作

public class BaseHttpHandler:IHttpHandler
    {
        public bool IsReusable
        {
            get { return false; }
        }
        public void ProcessRequest(HttpContext context)
        {
            var request = context.Request;
            var response = context.Response;
            var method = request.HttpMethod.ToLower();
            var result = string.Empty;
            
            result = string.Format("您正在请求BaseHttpHandler,请求方式是{0},queryStr={1}", method,request.QueryString);
            response.ContentType = "application/json";
            response.Write(result);
            response.End();
        }
    }
登入後複製

  IHttpHander只有兩個東西,一個是IsResuable,IsReusable屬性,MSDN上是這樣解釋的:取得一個值,該值指示其他請求是否可以使用IHttpHandler 實例。也就是說後繼的Http請求是不是可以繼續使用實作了該介面的類別的實例,這裡我們設定成false,因為我們不需要再去繼承這個Handler了

  另外一個是ProcessRequest,這個就是處理特定的請求,HttpContext裡麵包含了我們的http請求的各種參數,我們只需要對context的資料進行處理。

  訪問之前,我們需要註冊路由

  我們為程式新增一個全域全域應用程式類,刪除除了Application_Start方法以外的所有方法,然後編寫以下程式碼

#
 public class Global : System.Web.HttpApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {
            RouteTable.Routes.Add(new Route("api", new BaseRouteHandler()));
        }
    }
登入後複製

  行文到此,專案已經可以正常運行了,於是我們著急的編譯運行,輸入地址

#  注意哦,由於我們路由註冊的是api,所以在我們專案網址列之後加上/api的路由就可以正常請求到我們自訂的HttpRouteHandler裡面了。

  於是,我們了解到,最最基礎的有三個點:

  一.實現IRouterHandler,

  二.實作IHttpHandler,

#  三.註冊路由

  如果你也手癢癢,那麼,去實現自己的框架吧!

  待續。 。 。

以上是編寫一個webapi框架的開端的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!