nest middleware 中间件练习

写一个中间件(middleware),在需要模块中注入
可全局注入 app.use 可在模块中单独加入,根据路由编写exclue和forRoutes

class middleware
import { Injectable, NestMiddleware, Request, Response } from "@nestjs/common"
// import { Request, Response } from "express"
// 如果Request Response 是从express中引入的类型 post请求要获取请求体需要配合 body-parser

@Injectable()
export class LoggerMiddleware implements NestMiddleware {
	use(req: Request, res: Resopnse, next: () => void) {
		console.log("log middleware")
		next();
	}
}
module apply middleware
import { Module, NestModule, MiddlewareConsumer } from "@nestjs/common"
import { LoggerMiddleware } from "./common/middleware/logger.middleware"
import { CatsModule } from "./cats/cats.module"

@Module({
	imports: [CatsModule]
})
export class AppModule implements NestModule {
	configure(consumer: MiddlewareConsumer) {
		consumer
			.apply(LoggerMiddleware)
			.exclude( // 排除哪些路由
				{ path: "cats", method: RequestMethod.GET },
				{ path: "cats", method: RequestMethod.POST }
			)
			// .forRoutes("cats") // 匹配哪些路由
			// .forRoutes({ path: "cats", method: RequesMethod.Get }) // path 可以通配符
			// .forRoutes(CatsController)
	}
}
function middleware
import { Request, Reponse } from "nestjs/common"
import { Request, Reponse } from "express"

export function logger (
	req: Request,
	res: Response,
	next: Function
) {
	console.log("logger")
	next()
}
app.module
consumer
  .apply(logger) // 多个中间件可使用逗号隔开
  .forRoutes(CatsController);
multiple middleware

consumer.apply(cors(), helmet(), logger).forRoutes(CatsController);

global middleware

main.ts中使用app.use()
app.use(logger)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值