📜  nestjs 返回错误响应 - Javascript (1)

📅  最后修改于: 2023-12-03 15:17:51.182000             🧑  作者: Mango

nestjs 返回错误响应 - Javascript

本文将介绍如何在 NestJS 中返回错误响应。

NestJS 是一个基于 TypeScript 的 Node.js 框架,可以帮助开发人员构建高效、可扩展的服务器端应用程序。它提供了一种简单而又强大的方式来处理错误,并返回适当的响应。

1. 在控制器中返回错误响应

在 NestJS 中,可以在控制器的路由处理程序中返回错误响应。下面是一个示例代码片段:

import { Controller, Get, Res } from '@nestjs/common';
import { Response } from 'express';

@Controller('users')
export class UsersController {
  @Get()
  getUsers(@Res() res: Response) {
    try {
      // 在这里处理获取用户的逻辑

      // 如果获取用户失败,则抛出一个自定义错误
      throw new Error('Failed to get users');
    } catch (error) {
      // 返回错误响应
      res.status(500).json({
        error: error.message,
      });
    }
  }
}

在上面的示例中,我们在 getUsers 方法中抛出了一个自定义的错误,然后在 catch 块中返回了一个带有错误信息的 JSON 响应。

2. 使用自定义异常

NestJS 提供了一个强大的功能,即自定义异常。通过创建自定义异常类,您可以更好地组织和处理错误。下面是一个示例:

import { HttpException, HttpStatus } from '@nestjs/common';

export class CustomException extends HttpException {
  constructor(message: string) {
    super({ error: message }, HttpStatus.INTERNAL_SERVER_ERROR);
  }
}

// 在控制器中使用自定义异常
@Controller('users')
export class UsersController {
  @Get()
  getUsers() {
    throw new CustomException('Failed to get users');
  }
}

在上面的示例中,我们创建了一个名为 CustomException 的自定义异常类,并在控制器的 getUsers 方法中抛出该异常。在构造函数中,我们指定了错误消息和 HTTP 状态码。这样,当该异常被抛出时,NestJS 会自动通过该状态码返回错误响应。

3. 使用全局异常过滤器

除了使用自定义异常,NestJS 还提供了全局异常过滤器的功能。这个过滤器可以捕获应用程序中抛出的所有异常,并返回适当的错误响应。下面是一个示例:

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

@Catch()
export class CustomExceptionFilter implements ExceptionFilter {
  catch(exception: HttpException, host: ArgumentsHost) {
    const ctx = host.switchToHttp();
    const res = ctx.getResponse<Response>();

    // 捕获所有异常,并返回一个带有错误信息的 JSON 响应
    res.status(HttpStatus.INTERNAL_SERVER_ERROR).json({
      error: exception.message,
    });
  }
}

// 在应用程序中全局注册异常过滤器
app.useGlobalFilters(new CustomExceptionFilter());

在上面的示例中,我们创建了一个名为 CustomExceptionFilter 的自定义异常过滤器,并将其注册为应用程序的全局过滤器。无论何时抛出异常,该过滤器将捕获异常并返回一个带有错误信息的 JSON 响应。

以上是在 NestJS 中返回错误响应的一些常见方法。您可以根据个人需求选择适合的方法来处理错误并返回适当的响应。

请注意,上述代码仅为示例,并可能需要根据您的应用程序进行适当的调整。