ASP.NET Core的路由是通過(guò)一個(gè)類型為RouterMiddleware的中間件來(lái)實(shí)現(xiàn)的。如果我們將最終處理HTTP請(qǐng)求的組件稱為HttpHandler,那么RouterMiddleware中間件的意義在于實(shí)現(xiàn)請(qǐng)求路徑與對(duì)應(yīng)HttpHandler之間的映射關(guān)系。對(duì)于傳遞給RouterMiddleware中間件的每一個(gè)請(qǐng)求,它會(huì)通過(guò)分析請(qǐng)求URL的模式并選擇并提取對(duì)應(yīng)的HttpHandler來(lái)處理該請(qǐng)求。除此之外,請(qǐng)求的URL還會(huì)攜帶相應(yīng)參數(shù),該中間件在進(jìn)行路由解析過(guò)程中還會(huì)根據(jù)生成相應(yīng)的路由參數(shù)提供給處理該請(qǐng)求的Handler。為了讓讀者朋友們對(duì)實(shí)現(xiàn)在RouterMiddleware的路由功能具有一個(gè)大體的認(rèn)識(shí),我們照例先來(lái)演示幾個(gè)簡(jiǎn)單的實(shí)例。[本文已經(jīng)同步到《ASP.NET Core框架揭秘》之中]

目錄
一、注冊(cè)請(qǐng)求路徑與HttpHandler之間的映射
二、設(shè)置內(nèi)聯(lián)約束
三、為路由參數(shù)設(shè)置默認(rèn)值
四、特殊的路由參數(shù)

一、注冊(cè)請(qǐng)求路徑與HttpHandler之間的映射

ASP.NET Core針對(duì)請(qǐng)求的處理總是在一個(gè)通過(guò)HttpContext對(duì)象表示的上下文中進(jìn)行,所以上面我們所說(shuō)的HttpHandler從編程的角度來(lái)講體現(xiàn)為一個(gè)RequestDelegate的委托對(duì)象,因此所謂的“路由注冊(cè)”就是注冊(cè)一組具有相同默認(rèn)的請(qǐng)求路徑與對(duì)應(yīng)RequestDelegate之間的映射關(guān)系。接下來(lái)我們就同一個(gè)簡(jiǎn)單的實(shí)例來(lái)演示這樣的映射關(guān)系是如何通過(guò)注冊(cè)RouterMiddleware中間件的方式來(lái)完成的。

我們演示的這個(gè)ASP.NET Core應(yīng)用是一個(gè)簡(jiǎn)易版的天氣預(yù)報(bào)站點(diǎn)。如果用戶希望獲取某個(gè)城市在未來(lái)N天之內(nèi)的天氣信息,他可以直接利用瀏覽器發(fā)送一個(gè)GET請(qǐng)求并將對(duì)應(yīng)城市(采用電話區(qū)號(hào)表示)和天數(shù)設(shè)置在URL中。如下圖所示,為了得到成都未來(lái)兩天的天氣信息,我們發(fā)送請(qǐng)求采用的路徑為“weather/028/2”。對(duì)于路徑“weather/0512/4”的請(qǐng)求,返回的自然就是蘇州未來(lái)4天的添加信息。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式