首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从自定义异常过滤器返回JSON结果?

从自定义异常过滤器返回JSON结果,可以通过以下步骤实现:

  1. 创建自定义异常过滤器类:

首先,需要创建一个自定义异常过滤器类,该类需要继承自NestJS的ExceptionFilter基类。在这个类中,可以实现catch方法来处理异常。

代码语言:typescript
复制
import { ExceptionFilter, Catch, ArgumentsHost, HttpException } from '@nestjs/common';
import { Request, Response } from 'express';

@Catch(HttpException)
export class HttpExceptionFilter implements ExceptionFilter {
  catch(exception: HttpException, host: ArgumentsHost) {
    const ctx = host.switchToHttp();
    const response = ctx.getResponse<Response>();
    const request = ctx.getRequest<Request>();
    const status = exception.getStatus();

    response
      .status(status)
      .json({
        statusCode: status,
        timestamp: new Date().toISOString(),
        path: request.url,
      });
  }
}
  1. 应用自定义异常过滤器:

在创建了自定义异常过滤器类之后,需要将其应用到需要处理异常的路由或控制器上。可以使用@UseFilters装饰器来实现。

代码语言:typescript
复制
import { Controller, UseFilters } from '@nestjs/common';
import { HttpExceptionFilter } from './http-exception.filter';

@Controller()
@UseFilters(new HttpExceptionFilter())
export class AppController {
  // ...
}
  1. 抛出自定义异常:

在需要抛出异常的地方,可以使用NestJS的throw方法来抛出自定义异常。

代码语言:typescript
复制
import { HttpException, HttpStatus } from '@nestjs/common';

export class AppService {
  getHello(): string {
    throw new HttpException('Forbidden', HttpStatus.FORBIDDEN);
  }
}
  1. 返回JSON结果:

当自定义异常被抛出时,自定义异常过滤器会捕获该异常并返回JSON格式的结果。在上面的示例中,返回的JSON结果如下所示:

代码语言:json
复制
{
  "statusCode": 403,
  "timestamp": "2022-01-01T00:00:00.000Z",
  "path": "/hello"
}

通过以上步骤,可以实现从自定义异常过滤器返回JSON结果的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券