上一章我们讲了全局响应拦截,这一章我们来讲一下全局异常拦截器
common下面新建filter.ts
让我们创建一个异常过滤器,它负责捕获作为HttpException类实例的异常,并为它们设置自定义响应逻辑。为此,我们需要访问底层平台 Request和 Response。我们将访问Request对象,以便提取原始 url并将其包含在日志信息中。我们将使用 Response.json()方法,使用 Response对象直接控制发送的响应。
import { ExceptionFilter, Catch, ArgumentsHost,HttpException } from '@nestjs/common' import {Request,Response} from 'express' @Catch(HttpException) export class HttpFilter implements ExceptionFilter { catch(exception:HttpException, host: ArgumentsHost) { const ctx = host.switchToHttp() const request = ctx.getRequest<Request>() const response = ctx.getResponse<Response>() const status = exception.getStatus() response.status(status).json({ data:exception.message, time:new Date().getTime(), success:false, path:request.url, status }) } }
注册全局异常过滤器
app.useGlobalFilters(new HttpFilter())