NestJs 异常过滤器

文档:https://docs.nestjs.cn/9/exceptionfilters

实现

新建文件

common下面新建 filter.ts

image-20230406150943647

实现

让我们创建一个异常过滤器

它负责捕获作为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
        })
    }
}

image-20230406152256145

注册全局异常过滤器

在 main.ts 中注册

// 注册全局异常过滤器
app.useGlobalFilters(new HttpFilter());
posted @ 2023-04-06 16:26  makalo  阅读(62)  评论(0编辑  收藏  举报