通用上下文
Nest 提供了一些应用类来简化在不同应用上下文之间编写应用(例如 Nest HTTP 应用,微服务和 WebSockets 应用)。这些应用可以用于创建通用的守卫,过滤器和拦截器,可以工作在控制器,方法和应用上下文中。
ArgumentHost
ArgumentsHost 主要在 ExceptionFilter 中使用,用于处理并响应异常
javascript
catch(exception: HttpException, host: ArgumentsHost) {
const ctx = host.switchToHttp();
const response = ctx.getResponse();
const request = ctx.getRequest();
const status = exception.getStatus();
response.status(status).json({
statusCode: status,
timestamp: new Date().toISOString(),
path: request.url,
});
}
ExecutionContext
- Guards 中的 canActivate 方法
javascript
async canActivate(context: ExecutionContext): Promise<boolean> {
const request = context.switchToHttp().getRequest();
// ...
}
- Interceptors 中的 intercept 方法
typescript
intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
const request = context.switchToHttp().getRequest();
// ...
}
- Decorators 中的 createParamDecorator 方法
typescript
Tracing = createParamDecorator(
(key: keyof TracingData, context: ExecutionContext) => {
const contextType = context.getType<GqlContextType>();
// ...
},
);