小满nestjs(第十六章 nestjs 响应拦截器)

79 阅读1分钟

拦截器

拦截器具有一系列有用的功能,这些功能受面向切面编程(AOP)技术的启发。它们可以:

  • 在函数执行之前/之后绑定额外的逻辑
  • 转换从函数返回的结果
  • 转换从函数抛出的异常
  • 扩展基本函数行为
  • 根据所选条件完全重写函数 (例如, 缓存目的)

我们现在没有给我们的Nestjs 规范返回给前端的格式现在比较乱

 我们想给他返回一个标准的json 格式 就要给我们的数据做一个全局format

{
  data, //数据
  status:0,
  message:"成功",
  success:true
}

新建common 文件夹 创建 response.ts

 Nest Js 配合 Rxjs 格式化数据

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



interface data<T>{
    data:T
}

@Injectable()
export class Response<T = any> implements NestInterceptor {
    intercept(context, next: CallHandler):Observable<data<T>> {
        return next.handle().pipe(map(data => {
            return {
               data,
               status:0,
               success:true,
               message:"牛逼"
            }
        }))
    }
}

在main.ts 注册

app.useGlobalInterceptors(new Response())