nest.js实战之Interceptor转换响应

本文介绍了如何在Nest.js中使用Interceptor来转换响应数据,以适应前后端约定的响应模式。通过创建ResponseTransformInterceptor并将其注册为全局拦截器,利用rxjs的map操作符映射响应,同时讨论了异常处理应使用Filter进行统一管理。

 

1.简介

 

一般前后端的响应会约定一个模式来方便前端的响应处理,如nest.js出现异常时的模式:
 

{
    "statusCode":400,
    "data": null,
    "message": "Bad Request"
}

这样前端可以直接判断statusCode来处理响应

 

但是,controller方法里会直接返回需要的数据,即data部分

如果要在所有controller方法里都包裹上一层statusCode,这样代价又比较大,所以希望有一个统一的切面来转换正常响应数据

在nest.js里可以使用Interceptor来实现这种响应数据转换

 

2.实现

 

实现一个ResponseTransformInterceptor拦截器

import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

export interface Response<T> {
  statusCode: number;
  message: string;
  data: T;
}

/**
 * G
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值