中间件会在执行路由处理器之前被调用,中间件里面可以使用 request 还有 response 对象 .. 所以在中间件里面有机会可以加工处理这些东西 ..
下面先去创建一个中间件 .. 在命令行下面执行一下 nest generate middleware .. 名字叫 demo ..
它会给我们创建一个文件,放在了 demo 目录的下面 ..
回到项目 .. 打开 demo 下面的这个 demo.middleware.ts 文件 ... 在这个文件里定义了一个中间件 ..
中间件要用 @Injectable 装饰一下 .. 中间件类还会实施 NestMiddleware 接口 .. 按住 Command ,再点一下这个接口的名字可以打开定义这个接口的文件 .. 这个接口里面有个 resolve 方法 ..
回到这个中间件 .. 这里定义了 resolve 方法 ...
它会 return 一个方法 .. 这个方法的 req 参数表示的是 request,就是请求 .. res 表示的是 response,就是响应 .. next 是下一个要执行的中间件 ..
你可以把 req 还有 res 输出到控制台上,看看里面都有什么 .. 这里我们先简单的在控制台上输出一行文字 .. demo middleware: 🐘
下面我们再去找个地方用一下刚才定义的这个中间件 ...
打开 demo.module 这个模块 ..
在模块里使用中间件,得在模块的类里面添加一个 configure 方法 ... 方法里面添加一个 consumer 参数,类型是 MiddlewareConsumer .. 它里面有一些方法 ..
用一下 consumer 上的 apply ... 用一下 DemoMiddleware 中间件 ..
在 @nestjs/common 里面,要把 MiddlewareConsumer 拿出来用一下 ..
接着再用一个 forRoutes 设置一下中间件要应用在哪些路由上 .. 比如 demo ..
回到浏览器 .. 访问一下 demo 地址 ... 再回到运行项目的命令行标签 .. 上面会显示一个 demo middleware ,后面有个表情符号 ..
这个 forRoutes 我们也可以给它一个控制器的名字 .. 比如 DemoController ..
访问一下 demo 地址 .. 回到命令行标签 ... 同样会显示一行文字 .. 这行文字就是在 DemoMiddleware 中间件里输出到控制台上的东西 ..