Node.js Express中間件理解及中間件分類和作用
中間件:攔截HTTP請(qǐng)求的函數(shù)
一 核心作用
- 請(qǐng)求到達(dá)路由前執(zhí)行操作(如解析、校驗(yàn))
- 響應(yīng)發(fā)送前執(zhí)行操作(如日志、處理)
- 中間件的標(biāo)準(zhǔn)形式:
function middleware(req,res,next){
//處理邏輯(解析/校驗(yàn)等)
next() ;//傳遞控制權(quán)給下一個(gè)中間件/路由
}
- Express應(yīng)用本質(zhì)是中間件鏈組合,每個(gè)請(qǐng)求從頭到尾以此處理
二 中間件分類
- 應(yīng)用程序級(jí)中間件
- 通過app.use()掛載,作用于全局或路徑
- 用于統(tǒng)一處理解析、日志、安全等全局邏輯
app.use(express.json()) // 解析JSON 請(qǐng)求體
//全局日志記錄
app.use((req,res,next)=>{
console.log(`[${Date.now()}]${req.method}${req.url}`)
next()
})
- 路由級(jí)中間件
- 掛載在express.Router()實(shí)例上,僅作用當(dāng)前路由模塊
- 用于模塊化組織業(yè)務(wù)邏輯
const router =express.Router()
router.use((req,res,next)=>{
console.log('進(jìn)入用戶模塊')
next()
})
app.use('/users',router)
- 錯(cuò)誤處理中間件
- 定義:捕獲并處理錯(cuò)誤,必須接收四個(gè)參數(shù)(err,req,res,next)
- 統(tǒng)一返回錯(cuò)誤響應(yīng),提升系統(tǒng)健壯性
//錯(cuò)誤中間件
app.use(()=>{
res.send({
status:1,
msg:err instanceof Error?err.message:err,
})
})
- 內(nèi)置中間件
- 定義:Express原生提供,無(wú)需額外安裝
- 例子
- express.static(‘public’):托管靜態(tài)資源
- express.json():解析JSON 請(qǐng)求體
- express.urlencoded();解析請(qǐng)求體數(shù)據(jù)
- 第三方中間件
- 社區(qū)開發(fā),npm 安裝擴(kuò)展功能
- 例子
- 數(shù)據(jù)驗(yàn)證:express-validator
- 文件上傳:multer
- 解決跨域問題:cors
- 價(jià)值;副高高頻需求、成熟可靠
到此這篇關(guān)于Node.js Express中間件理解及中間件分類和作用的文章就介紹到這了,更多相關(guān)Node.js Express中間件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Mac OS上安裝使用Node.js的項(xiàng)目自動(dòng)化構(gòu)建工具Gulp
Gulp是一個(gè)在使用上比Grunt更加簡(jiǎn)潔的自動(dòng)化工具(文中附有對(duì)比),和Node的npm包管理器配合使用非常方便,下面就記錄一下在Mac OS上安裝使用Node.js的項(xiàng)目自動(dòng)化構(gòu)建工具Gulp的方法:2016-06-06
Windows系統(tǒng)下Node.js的簡(jiǎn)單入門教程
這篇文章主要介紹了Windows系統(tǒng)下Node.js的簡(jiǎn)單入門教程,Node.js是用于后端編程的JavaScript框架,需要的朋友可以參考下2015-06-06
Node.js服務(wù)端實(shí)戰(zhàn)之服務(wù)啟動(dòng)過程詳解
這篇文章主要為大家介紹了Node.js服務(wù)端實(shí)戰(zhàn)之服務(wù)啟動(dòng)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
nodejs中實(shí)現(xiàn)sleep功能實(shí)例
這篇文章主要介紹了nodejs中實(shí)現(xiàn)sleep功能實(shí)例,本文講解了sleep功能的開發(fā)過程和使用效果及性能測(cè)試,需要的朋友可以參考下2015-03-03
nodejs檢測(cè)因特網(wǎng)是否斷開的解決方案
這篇文章主要給大家介紹了關(guān)于nodejs如何檢測(cè)因特網(wǎng)是否斷開的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用nodejs具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Nodejs?Sequelize手冊(cè)學(xué)習(xí)快速入門到應(yīng)用
這篇文章主要為大家介紹了Nodejs?Sequelize手冊(cè)學(xué)習(xí)快速入門到應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10

