Nodejs Express 4.X 中文API 4--- Router篇

 

本篇是Express 4.0 API翻譯的第四篇,本篇的內容主要是Router的相關操做。

 

Router()

路由器是一個孤立的中間件和路由的實例。路由器能夠被認爲是一個」mini」的應用程序,僅能執行中間件和路由選擇。每個Express程序都都會有一個內置的應用路由器。html

路由器的行爲就像是一箇中間件自身同樣你可使用經過應用或者是在其餘的路由規則內。正則表達式

建立一個新的路由器經過使用」express.Router()」數據庫

路由器能夠是有中間件,添加http動態路由就像是一個程序。express

而後你可使用一個路由器爲一個特定的根URL這樣分離您的路由來進入文件甚至是mini 應用。json

 

 router.use([path],function)

使用被給定的中間件function,帶有可選參數的掛載path,默認被掛載在’/’api

中間件就像是一個管道,請求開始時從第一個被定義的中間件開始,順着這個線路一直向下,匹配每個知足條件的路由。app

「綁定」的路徑是被剝離的以及中間件函數是不可見的。這主要影響到被綁定的中間件將會在只要後綴肯定的狀況下,無論前綴是什麼樣子都會被執行。異步

這樣,中間件使用」router.use()」被」定義」的順序將會是很是重要的,它們是被順序調用的,所以這將定義中間件的優先級。例如一般」express.logger()」是您想最早調用的中間件,來記錄全部的請求。函數

那麼如今倘若您不想記錄靜態文件的請求,可是又想繼續記錄路由和中間件的請求,你能夠簡單的將靜態文件定義移到logger()上。post

另外一個具體的例子是利用多文件目錄提供靜態文件服務,給予」/public」的優先級高於其餘的目錄。

 

 router.param([name],callback)

邏輯映射到參數。例如當’:user’存在於路由路徑,你能夠映射用戶加載邏輯來自動爲這個路由的提供req.user,或者執行參數輸入驗證。

下面的代碼片斷說明了callback是如何的像中間件,所以支持異步操做,然而假如這個參數的值在這裏被命名爲id。企圖執行加載用戶信息,而後分配給req.user,不然傳遞一個錯誤給next(err).

重要的是要意識到任何路由觸發了被命名爲的參數回調函數將會被順序執行,若是next沒有被傳遞一個error在上一級。

或者你將只傳遞一個回調函數,在這種狀況下,你將有機會改變router.param()的api。例如express-params定義了下面的回調函數,你能夠限制參數給定的正則表達式。

這個例子有點先進,檢查第二個參數是否爲正則表達式,返回一個行爲相似於」user」參數例子的回調函數。

這個方法能夠被用來驗證參數的有效性,或者能夠解析它們到提供的捕捉組。

router.use() 方法還支持命名參數,所以你的其餘路由規則掛載點也可使用這個命名參數。

router.route(path)

返回一個路由的一個實例,你能夠用於處理HTTP動態請求使用可選的中間件。使用router.route()是一種推薦的方法來避免重複路由命名和拼寫錯誤.。

基於router.param()以前的例子,咱們看到router.route()使咱們可以容易地指定各類HTTP動態處理程序。

 

該方法從新使用’/users/:user_id’對於不一樣的HTTP動態請求路徑和添加處理程序。

router.VERB(path,[callback...],callback)

router.VERB()方法提供路由功能在Express,這裏的VERB是HTTP動態請求的一中,就好像router.post()。多種回調函數能夠被給定,全部的都將被平等對待,這種行爲就像是中間件,但不一樣的是這些」中間件」能夠調用next(‘route’)來繞過剩下的回調函數。這種機制可用於執行先決條件路線而後將控制傳遞給後續的路線當這裏沒有繼續匹配的路線時。

如下代碼片斷演示了最簡單的路由定義。Express將路徑轉義爲正則表達式,在內部使用匹配傳入的請求。請求字符串將不被考慮在執行匹配的過程當中,例如 「GET /」將會匹配下面的規則,一樣」/GET /?name=tobi」將也會被匹配。

正則表達式一樣能夠被使用,若是你有一些特殊的限制,正則表達式會是至關有用的,例以下面的代碼將會匹配」GET /commits/71dbb9c」 一樣也會匹配」GET /commits/71dbb9c..4c084f9″。

相關文章
相關標籤/搜索