中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何編寫一個webapi框架的開端

發布時間:2020-12-05 11:41:59 來源:億速云 閱讀:189 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關如何編寫一個webapi框架的開端,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

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

  話不多說了,直接開始

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

  如何編寫一個webapi框架的開端

  不勾選任何東西。

  然后,我們新增一個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()));
        }
    }

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

如何編寫一個webapi框架的開端

  注意哦,由于我們路由注冊的是api,所以在我們項目地址欄之后加上/api的路由就可以正常請求到我們自定義的HttpRouteHandler里面了。

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

  一.實現IRouterHandler,

  二.實現IHttpHandler,

  三.注冊路由

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

  待續。。。

關于如何編寫一個webapi框架的開端就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

清镇市| 大连市| 景谷| 德兴市| 湛江市| 和顺县| 邵阳市| 平乐县| 老河口市| 温州市| 隆尧县| 息烽县| 宜兴市| 个旧市| 屏东市| 古田县| 盐源县| 台中市| 章丘市| 青铜峡市| 顺义区| 林甸县| 浦北县| 武汉市| 开封县| 淅川县| 公安县| 文登市| 昆山市| 体育| 黎平县| 中牟县| 霸州市| 锦屏县| 响水县| 鄂尔多斯市| 沧源| 建始县| 合肥市| 鹤庆县| 武义县|