当前位置:   article > 正文

NestJS入门7:增加异常过滤器

NestJS入门7:增加异常过滤器

 前文参考:

NestJS入门1

NestJS入门2:创建模块

NestJS入门3:不同请求方式前后端写法

NestJS入门4:MySQL typeorm 增删改查

NestJS入门5:加入Swagger

NestJS入门6:日志中间件

本文代码基于上一篇文章《NestJS入门6:日志中间件

1. 标准异常写法

在user.controller.ts中加入以下语句

postman中测试如下:

 2. 安装过滤器

nest g filter common/filter/http-exception

安装完成后在common/filter下增加两个文件

3. 修改http-exception.filter.ts

将http-exception.filter.ts

修改为:

  1. import { ArgumentsHost, Catch, ExceptionFilter, HttpException } from '@nestjs/common';
  2. import { Request, Response } from 'express';
  3. @Catch(HttpException)
  4. export class HttpExceptionFilter implements ExceptionFilter {
  5. catch(exception: HttpException, host: ArgumentsHost) {
  6. const ctx = host.switchToHttp();
  7. const response = ctx.getResponse<Response>();
  8. const request = ctx.getRequest<Request>();
  9. const status = exception.getStatus();
  10. const msg = exception.getResponse().toString();
  11. response
  12. .status(status)
  13. .json({
  14. statusCode: status, //HttpException的status
  15. timestamp: new Date().toISOString(), // 时间戳
  16. path: request.url, //调用路径
  17. message: msg, //错误说明
  18. });
  19. }
  20. }

4. main.ts创建全局过滤器

增加以下一条语句

5. 验证

user.controller.ts依然是这个写法

使用Postman测试如下

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号