在NestJS中,如何使用全局中間件? nestjs 文檔
在NestJS中,中間件可以用于各種場景,包括身份驗(yàn)證、授權(quán)、錯(cuò)誤處理等。中間件可以在全局范圍或特定路由范圍內(nèi)使用。
要?jiǎng)?chuàng)建一個(gè)全局中間件,首先需要導(dǎo)入@nestjs/common
中的Module
和MiddlewareConsumer
。然后,可以使用async()
函數(shù)來定義一個(gè)異步函數(shù)作為中間件的實(shí)現(xiàn)。這個(gè)函數(shù)應(yīng)該接收一個(gè)請(qǐng)求對(duì)象和一個(gè)響應(yīng)對(duì)象作為參數(shù),并返回一個(gè)Promise對(duì)象。
下面是一個(gè)示例代碼:
import { Module, NestModule, MiddlewareConsumer } from '@nestjs/common';
import { RequestMethod } from '@nestjs/common';
import { AuthMiddleware } from './auth.middleware';
@Module({
imports: [
// ...
],
providers: [AuthMiddleware],
exports: [AuthMiddleware],
})
export class AppModule {}
在上面的代碼中,我們首先導(dǎo)入了@nestjs/common
模塊,并定義了一個(gè)名為AppModule
的模塊。然后,我們導(dǎo)入了AuthMiddleware
中間件,并將其添加到providers
數(shù)組中。最后,AuthMiddleware
導(dǎo)出為模塊的一部分。這樣,我們就可以在應(yīng)用程序的其他部分中使用它。
在應(yīng)用程序啟動(dòng)時(shí),@NestJS/platform-express
將自動(dòng)加載所有模塊,并將它們注冊(cè)到應(yīng)用程序的上下文中。這意味著AuthMiddleware
將在應(yīng)用程序的所有請(qǐng)求和響應(yīng)上執(zhí)行。
在創(chuàng)建全局中間件之后,您還可以在應(yīng)用程序的其他部分添加自定義中間件。這可以通過在每個(gè)模塊中導(dǎo)入并使用相同的AuthMiddleware
來實(shí)現(xiàn)。
總結(jié)來說,創(chuàng)建和使用全局中間件是NestJS中一種強(qiáng)大的功能,它可以幫助您更好地組織和管理應(yīng)用程序的請(qǐng)求和響應(yīng)處理邏輯。
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。