异常拦截器

正确的说应该是「异常过滤器」而不是拦截器

定义全局异常过滤器 @@16

文件放在 src/commone/filter.ts

import { ArgumentsHost, Catch, ExceptionFilter, HttpException } from '@nestjs/common'
import { Request, Response } from 'express'

@Catch()
export class HttpFilter implements ExceptionFilter {
  catch(exception: HttpException, host: ArgumentsHost) {
    const cxt = host.switchToHttp()
    const next = cxt.getNext()
    const request = cxt.getRequest<Request>()
    const response = cxt.getResponse<Response>()
    const status = exception.getStatus()
    response.status(status).json({
      success: false,
      tiem: new Date(),
      data: exception.message,
      status,
      path: request.url,
    })
  }
}

main.ts中使用

  // 异常过滤器
  app.useGlobalFilters(new HttpFilter())