APP之構架自己的webapi架構

來源:互聯網
上載者:User

標籤:use   idg   地址   cep   ddn   pmi   oct   ATX   outer   

當我們學習到一定程度的時候,我們會想要去深入瞭解代碼底層的東西,也更想擁有一個屬於自己的架構,當然,博主也正是如此。本文可能成為編寫一個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,

三.註冊路由

APP之構架自己的webapi架構

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.