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());
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章