文檔:https://docs.nestjs.cn/9/exceptionfilters
實現
新建文件
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
})
}
}
註冊全局異常過濾器
在 main.ts 中註冊
// 註冊全局異常過濾器
app.useGlobalFilters(new HttpFilter());