三、Express 路由
一、路由
路由是指應用程序的端點(URI)如何響應客戶端請求.
你可以使用app與HTTP方法相對應的Express對象的方法來定義路由.
例如,app.get()處理GET請求和app.post POST 請求。
你還可以使用app.all()處理所有HTTP方法,并使用app.use()將中間件指定為回調函數.
這些路由方法指定在應用程序收到對指定路由(端點)和HTTP方法的請求時調用的回調函數(有時稱為“處理函數”)。換句話說,應用程序“偵聽”與指定的路由和方法匹配的請求,并且當它檢測到匹配項時,它將調用指定的回調函數。
實際上,路由方法可以具有多個回調函數作為參數。對于多個回調函數,重要的是提供next回調函數的參數,然后next()在函數體內調用以將控制權移交給下一個回調。
以下代碼是一個非常基本的路由示例。
二、路由方法
路由方法是從HTTP方法之一派生的,并附加到express該類的實例。
以下代碼是為GET和POST方法定義的到應用根目錄的路由的示例。
Express 支持與所有HTTP 請求方法相對應的方法:get,post等。有關完整列表,請參見app.METHOD。
有一種特殊的路由方法,app.all()用于為所有HTTP請求方法的路徑加載中間件功能。
例如,無論是使用GET,POST,PUT,DELETE 還是http模塊支持的任何其他HTTP請求方法,都會對路由/secret的請求執行以下處理程序。
三、路由路徑
路由路徑與請求方法結合,定義了可以進行請求的端點.
路由路徑可以是字符串,字符串模式或正則表達式.
字符?,+,*,和()是他們的正則表達式的對應的子集.
連字符(-)和點(.)由基于字符串的路徑按字面意義進行解釋.
如果你需要在路徑字符串中使用美元字符(),請將其轉義([并括在和中]).
例如,"/data/$book"處用于請求的路徑字符串將為"
/data/([$])book".
四、路徑參數
路由參數被命名為URL段,用于捕獲URL中在其位置處指定的值。捕獲的值將填充到req.params對象中,并將路徑中指定的 route參數的名稱作為其各自的鍵。
要使用路由參數定義路由,只需在路由路徑中指定路由參數,如下所示。
五、路由處理程序
您可以提供行為類似于中間件的多個回調函數來處理請求。唯一的例外是這些回調可能會調用next(‘route’)以繞過其余的路由回調。您可以使用此機制在路由上施加先決條件,然后在沒有理由繼續使用當前路由的情況下將控制權傳遞給后續路由。
路由處理程序可以采用函數,函數數組或二者組合的形式,如以下示例所示。
單個回調函數可以處理路由。例如:
多個回調函數可以處理一條路由(請確保指定了next對象)。例如:
回調函數數組可以處理路由。例如:
獨立功能和功能數組的組合可以處理路由。例如:
六、應對方法
res下表中響應對象()上的方法可以將響應發送到客戶端,并終止請求-響應周期。如果沒有從路由處理程序調用這些方法,則客戶端請求將被掛起。
七、app.route()
可以使用來為路由路徑創建可鏈接的路由處理程序app.route()。
由于路徑是在單個位置指定的,因此創建模塊化路由非常有幫助,減少冗余和錯別字也很有幫助。
這是使用定義的鏈式路由處理程序的示例app.route()。
八、快速路由器
使用express.Router該類創建模塊化的,可安裝的路由處理程序。一個Router 實例是一個完整的中間件和路由系統;因此,它通常被稱為“迷你應用程序”。
以下示例將路由器創建為模塊,在其中加載中間件功能,定義一些路由,并將路由器模塊安裝在主應用程序的路徑上。
總結
以上是生活随笔為你收集整理的三、Express 路由的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS面向对象——Object.defin
- 下一篇: JavaScript高级之继承