NodeJS 基礎(chǔ)教程

NodeJS Express.js

NodeJS 緩沖&URL

NodeJS MySql

NodeJS MongoDB

NodeJS 文件(FS)

NodeJS 其他

Express.js 中間件

Express.js中間件

什么是中間件?

中間件是一種可以訪問請(qǐng)求和響應(yīng)對(duì)象的功能,也可以next在應(yīng)用程序的請(qǐng)求-響應(yīng)周期中使用該功能。

在本教程中,我們將學(xué)習(xí)如何在Node.js Express應(yīng)用程序中定義中間件函數(shù),以及如何調(diào)用中間件函數(shù)。

中間件術(shù)語

request –是客戶端發(fā)出HTTP請(qǐng)求(例如PUT,GET等)時(shí)到達(dá)Express應(yīng)用程序的HTTP請(qǐng)求。它包含諸如查詢字符串,url參數(shù),標(biāo)頭等屬性。

response–對(duì)象表示Express應(yīng)用程序在收到HTTP請(qǐng)求時(shí)發(fā)送的HTTP響應(yīng)。

next – next用于繼續(xù)中間件堆棧中的下一個(gè)中間件。

request-response cycle請(qǐng)求-響應(yīng)周期) –從請(qǐng)求打入Express應(yīng)用程序開始,直到響應(yīng)離開該應(yīng)用程序以進(jìn)行請(qǐng)求為止執(zhí)行的操作周期。

中間件堆棧–在請(qǐng)求-響應(yīng)周期中執(zhí)行的中間件功能堆棧。

定義中間件功能

正如我們?cè)谥虚g件功能的定義中已經(jīng)提到的那樣,它可以訪問請(qǐng)求,響應(yīng)對(duì)象和下一個(gè)功能。

語法與JavaScript函數(shù)的語法相同。它接受請(qǐng)求,響應(yīng)對(duì)象和下一個(gè)函數(shù)作為參數(shù)。

 
 function logger(req, res, next) { 
    
 }

 這里logger是函數(shù)名稱,req是HTTP請(qǐng)求對(duì)象,res是節(jié)點(diǎn)響應(yīng)對(duì)象,next是請(qǐng)求-響應(yīng)周期中的下一個(gè)函數(shù)。

您可以訪問request對(duì)象的所有屬性和方法req。

同樣,您可以訪問response object的所有屬性和方法res。

next()中間件函數(shù)內(nèi)部的調(diào)用函數(shù)是可選的。如果使用next()語句,則在請(qǐng)求-響應(yīng)周期中繼續(xù)執(zhí)行下一個(gè)中間件功能。如果您不調(diào)用next()函數(shù),則給定請(qǐng)求的執(zhí)行將在此處停止。

function logger(req, res, next) { 
    // 您的代碼
    next() // 調(diào)用中間件堆棧中的下一個(gè)函數(shù)
 }

調(diào)用中間件

在Express應(yīng)用程序中,您可以使用應(yīng)用程序?qū)ο笊系膗se函數(shù)來調(diào)用中間件。

var express = require('express') 
var app = express() 
 
function logger(req, res, next) { 
   // 您的代碼
   next() 
 } 
 
app.use(logger)

Express.js中間件示例

在此示例中,我們將定義一個(gè)名為logger的中間件,該中間件將當(dāng)前時(shí)間和查詢字符串記錄到控制臺(tái)。

app.js

var express = require('express') 
var app = express() 
 
// 定義中間件功能
function logger(req, res, next) { 
   console.log(new Date(), req.url) 
   next() 
 } 
 
// 在每個(gè)請(qǐng)求-響應(yīng)周期中調(diào)用logger:middleware
app.use(logger) 
 
// 為路徑“ /”執(zhí)行的路由
app.get('/', function (req, res) { 
   res.send('This is a basic Example for Express.js by nhooo') 
 }) 
 
// 啟動(dòng)服務(wù)器
var server = app.listen(8000, function(){ 
    console.log('Listening on port 8000...') 
 })

啟動(dòng)此應(yīng)用程序,然后在瀏覽器中單擊以下URL。

  • http://localhost:8000/

  • http://localhost:8000/hello-page/

輸出將是

對(duì)于監(jiān)聽8000的應(yīng)用程序的每個(gè)請(qǐng)求,我們都附加了一個(gè)中間件功能。對(duì)于url http://localhost:8000/,URL為/ ,因此logger的輸出為當(dāng)前時(shí)間和'/'。對(duì)于url同樣如此'/hello-page/'。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清