古詩詞大全網 - 藝術簽名 - 排名第二的中間件、路由、路由器、https

排名第二的中間件、路由、路由器、https

本章主要詳細研究了Express的兩個最大的特性:中間件和路由。

中間件存在於許多框架中。Express中間件將壹個大的請求處理器分成幾個小的部分進行處理。中間件可以邏輯地控制請求、響應對象,從而返回期望的結果。

Express使用app.use()的方法將中間件添加到中間件棧中形成函數數組,使用FIFO(先進先出)依次處理數據。

使用服務器的NodeJS框架,從客戶端發起請求到收到響應的過程大致如下:

當中間件堆棧完成處理時,它要麽生成壹個錯誤並退出,要麽調用res.end()方法,或者res.send()和res.sendfile()方法(這兩個方法自動調用res.end()方法)。

最常見的中間件形式有:

最後壹個中間件‘next’可以省略,例如它不匹配路由,返回404:

以下示例用於編寫兩個中間件,壹個用於日誌記錄,另壹個用於發送文件:

當然也可以用第三方提供的morgan中間件來代替上面的日誌中間件和express自帶的express.static()來代替文件的發送。上面的例子可以改寫為:

它的簽名是:

如果進入錯誤模式,其他正常中間件不會處理,所以壹般的錯誤處理放在最後,就像《無極》裏的‘catch’。

給next()添加壹個參數,通常是壹個錯誤對象,可以進入錯誤模式:

示例:

在前壹章中,我們簡要介紹了路由。簡單來說,路由就是:URL+HTTP請求動作(' get ',' post ',' put ',' delete ')...)->相應的響應處理函數。

現在我們將更詳細地介紹路由,例如靜態文件路由問題和路由器的使用。

在前壹章中,我們討論了三種路徑匹配方式:字符串、字符串模板和正則表達式。這裏有幾個例子:

我們來談談屬性req.params:

使用命名路由參數時,此屬性是壹個對象,如“/user/:name”,而“name”是“req.params”對象的壹個屬性。

使用正則表達式定義路由路徑時,可以通過' req.params[n]'獲得捕獲的組:

在搜索引擎中查詢,經常會遇到這種形式的路由'/搜索?Q=javascript20%tutorials ',可以通過以下途徑處理:

使用req.query獲取查詢字符串:

路由器是中間件和路由的獨立實例。您可以將壹個大型應用程序拆分成許多小型應用程序。每個express應用程序都有內置的應用程序路由器。

使用express實例化路由器。路由器()

主應用程序:

路由器:

路由器有幾種方法,如下所述:

可選參數用於定義路由器的行為。有三個可選參數:

這種方法類似於路由器。方法(),除了它匹配所有HTTP請求操作(' GET ',' POST ')...).

對於指定路徑下的全局邏輯非常有用,比如:

返回單個路由實例,可以在鏈中調用該實例以避免重復。

以下情況:

1.例如,我們參觀了www.example.com/dog.jpg'',現在我們想通過www.example.com/gallery/dog.jpg''.,我們可以通過以下方式。

2.多個靜態文件路徑。有時文件可能在不同的文件夾中。我們可以多次調用' express.static()'方法來添加靜態文件的位置。

這種情況可能以下列方式存在:

3.以上第四種情況可以通過以下方式解決。

現在用戶可以同時獲得'/public '和'/uploads '資源,比如'/public/cat.png '和'/uploads/dog.png '

HTTPS增加了壹層安全協議(TSL(優於ssl)或SSL)。

通俗解釋:每個設備都有壹個公鑰(google稱之為CAs之類的證書)和壹個私鑰,發送信息,用私鑰加密,對方接收信息,用公鑰識別,然後用自己的私鑰解密。

為了使用HTTPS,需要執行以下步驟:

本章主要詳細介紹中間件的工作原理和定義形式;使用路由時的壹些方法,如何使用路由器將app劃分成小app,路由器API常用的壹些方法。最後,我們大致講了如何使用https模塊,如何處理https協議。

2065438+2007年3月20日19:40:57