首页前端开发JavaScriptnestjs返回给前端数据格式的封装实现

nestjs返回给前端数据格式的封装实现

时间2024-01-31 22:47:02发布访客分类JavaScript浏览474
导读:收集整理的这篇文章主要介绍了nestjs返回给前端数据格式的封装实现,觉得挺不错的,现在分享给大家,也给大家做个参考。 一般开发过程中不不会根据httpcode来判断接口请求成功与失败的...
收集整理的这篇文章主要介绍了nestjs返回给前端数据格式的封装实现,觉得挺不错的,现在分享给大家,也给大家做个参考。

一般开发过程中不不会根据httpcode来判断接口请求成功与失败的,而是会根据请求返回的数据,里面加上code字段

一、返回的数据格式对比

1、直接返回的数据格式

{
  "id": 1,  "uuid": "cbbe7abc-b95e-48a0-8d24-b1ac93c45328",  "name": "哈士奇1",  "age": 12,  "color": null,  "createAt": "2019-07-25T09:13:30.000Z",  "updateAt": "2019-07-25T09:13:30.000Z"}
    

2、我们自己包装后的返回数据

{
 code: 0, message: "请求成功", data: {
  "id": 1,  "uuid": "cbbe7abc-b95e-48a0-8d24-b1ac93c45328",  "name": "哈士奇1",  "age": 12,  "color": null,  "createAt": "2019-07-25T09:13:30.000Z",  "updateAt": "2019-07-25T09:13:30.000Z" }
}
    

二、拦截全部的错误请求,统一返回格式

1、使用命令创建一个过滤器

nest g f filters/httPException

2、过滤器的代码

import {
 argumentsHost, Catch, ExceptionFilter, HttpException, Httpstatus, LOGger,}
     From '@nestjs/common';
@Catch(HttpException)export class HttpExceptionFilter implements ExceptionFilter {
 catch(exception: HttpException, host: argumentsHost) {
      const ctx = host.swITchToHttp();
      const response = ctx.getResponse();
      const request = ctx.getRequest();
      const message = exception.message.message;
      Logger.log('错误提示', message);
  const errorResponse = {
   data: {
    error: message,   }
, // 获取全部的错误信息   message: '请求失败',   code: 1, // 自定义code   url: request.originalUrl, // 错误的url地址  }
    ;
      const status =   exception instanceof HttpException    ? exception.getStatus()    : HttpStatus.INTERNAL_SERVER_ERROR;
      // 设置返回的状态码、请求头、发送错误信息  response.status(status);
      response.header('Content-type', 'application/json;
     charset=utf-8');
      response.send(errorResponse);
 }
}
    

3、在main.ts中全局注册

...import {
 HttpExceptionFilter }
     from './filters/http-exception.filter';
async function bootstrap() {
     ... // 全局注册错误的过滤器 app.useGlobalFilters(new HttpExceptionFilter());
}
    bootstrap();
    

4、测试,返回的错误信息

{
 "statusCode": 400, "error": "Bad Request", "data": {
  "message": [   {
    "age": "必须的整数"   }
  ] }
, "message": '请求失败', "code": 1, "url": "/api/v1/cat"}
    

三、统一请求成功的返回数据

1、创建一个拦截器src/interceptor/transform.interceptor.ts

2、拦截器的代码

import {
 Injectable, NestInterceptor, CallHandler, ExecutionContext,}
     from '@nestjs/common';
import {
 map }
     from 'RxJS/operators';
import {
 Observable }
     from 'rxjs';
    interface ResponseT>
 {
     data: T;
}
    @Injectable()export class TransformInterceptorT>
     implements NestInterceptorT, ResponseT>
    >
 {
     intercept(  context: ExecutionContext,  next: CallHandlerT>
    , ): ObservableResponseT>
    >
 {
      return next.handle().pipe(   map(data =>
 {
    return {
     data,     code: 0,     message: '请求成功',    }
    ;
   }
    ),  );
 }
}
    

3、全局注册

...import {
 TransformInterceptor }
     from './interceptor/transform.interceptor';
async function bootstrap() {
     ... // 全局注册拦截器 app.useGlobalInterceptors(new TransformInterceptor());
 ...}
    bootstrap();
    

4、测试返回数据

{
 "data": {
  "id": 1,  "uuid": "cbbe7abc-b95e-48a0-8d24-b1ac93c45328",  "name": "哈士奇1",  "age": 12,  "color": null,  "createAt": "2019-07-25T09:13:30.000Z",  "updateAt": "2019-07-25T09:13:30.000Z" }
, "code": 0, "message": "请求成功"}
    

到此这篇关于nestjs返回给前端数据格式的封装实现的文章就介绍到这了,更多相关nestjs返回给前端数据格式内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

您可能感兴趣的文章:
  • Nest.js 授权验证的方法示例
  • Nest.js环境变量配置与序列化详解
  • nest.js 使用express需要提供多个静态目录的操作方法

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: JavaScript实现H5接金币功能(实例...下一篇:NestJs使用Mongoose对MongoDB操作...猜你在找的JavaScript相关文章 html font标签如何设置字体大小?html font标签属性用法介绍2022-05-16vue3+TypeScript+vue-router的使用方法2022-04-16vue3获取当前路由地址2022-04-16如何利用React实现图片识别App2022-04-16JavaScript展开运算符和剩余运算符的区别详解2022-04-16微信小程序中使用vant框架的具体步骤2022-04-16Vue elementUI表单嵌套表格并对每行进行校验详解2022-04-16如何利用Typescript封装本地存储2022-04-16微信小程序中wxs文件的一些妙用分享2022-04-16JavaScript的Set数据结构详解2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: nestjs返回给前端数据格式的封装实现
本文地址: https://pptw.com/jishu/594579.html
js实现验证码干扰(动态) struct student在c语言中是什么意思?

游客 回复需填写必要信息