上下文
上下文顾名思义就是呈上启下作用,通过上下文能获取到一些信息,比如请求信息,响应信息,中间件信息等等
先说过滤器
- 新建一个过滤器
aaa.filter.ts
注意
switchToHttp 切换到 http 上下文,然后在调用 getRequest 获取请求对象,getResponse 获取响应对象
如果是 websocket、基于 tcp 的微服务等上下文,就分别调用 host.swtichToWs、host.switchToRpc 方法。
- 举例如下:
ts
import { ArgumentsHost, Catch, ExceptionFilter } from "@nestjs/common";
import { Response } from "express";
import { AaaException } from "./AaaException";
@Catch(AaaException)
export class AaaFilter implements ExceptionFilter {
catch(exception: AaaException, host: ArgumentsHost) {
if (host.getType() === "http") {
const ctx = host.switchToHttp();
const response = ctx.getResponse<Response>();
const request = ctx.getRequest<Request>();
response.status(500).json({
aaa: exception.aaa,
bbb: exception.bbb,
});
} else if (host.getType() === "ws") {
} else if (host.getType() === "rpc") {
}
}
}
再说守卫
注意
switchToHttp 切换到 http 上下文,然后在调用 getRequest 获取请求对象,getResponse 获取响应对象
如果是 websocket、基于 tcp 的微服务等上下文,就分别调用 host.swtichToWs、host.switchToRpc 方法。
拦截器
注意
switchToHttp 切换到 http 上下文,然后在调用 getRequest 获取请求对象,getResponse 获取响应对象
如果是 websocket、基于 tcp 的微服务等上下文,就分别调用 host.swtichToWs、host.switchToRpc 方法。