• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > nestjs返回给前端数据格式的封装实现

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

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了nestjs,前端数据格式的封装等相关知识,希望对您有所帮助

这篇文章主要介绍了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 Response<T> {    data: T;}@Injectable()export class TransformInterceptor<T>implements NestInterceptor<T, Response<T>> {    intercept(        context: ExecutionContext,        next: CallHandler<T>,    ): Observable<Response<T>> {        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": "请求成功"}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2022-04-29ThinkPHP 6.0 多语言优化扩展包的安装与使用
  • 2022-04-29DedeCMS使用sql语句获取文章链接地址
  • 2022-04-29用Coreldraw做漂亮的动画图片
  • 2022-04-29微信小程序发布新版本时自动提示用户更新的方法
  • 2022-04-29小程序怎样在页面传递对象数组?
  • 2022-04-29聊聊Bootstrap5中的断点与容器
  • 2022-04-29一起来了解下Bootstrap中的tab选项卡
  • 2022-04-29Vue 和 Yii 怎么配合?
  • 2022-04-29Photoshop使用计算工具调出别致的颜色
  • 2022-04-29PHP使用mysqli同时执行多条sql查询语句的实例

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • CorelDraw实例教程:放射线效果另类做法
    • 设计师应该从四个方面优化网站
    • 一起聊聊PHP中return语句的作用和echo的区别(详解及实例)
    • php中get_object_vars()在数组的实例用法
    • 介绍Laravel unit test : 模拟认证的用户
    • CSS如何修改placeholder的颜色
    • Photoshop制作3D小人推动切割的艺术字教程
    • Photoshop制作超酷的3D岩石字体教程
    • Photoshop设计电影导演工作室网站首页
    • PhotoShop设计制作梦幻炫彩光斑文字效果教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有