激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - nestjs返回給前端數據格式的封裝實現

nestjs返回給前端數據格式的封裝實現

2022-01-22 18:55水痕01 js教程

這篇文章主要介紹了nestjs返回給前端數據格式的封裝實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一般開發過程中不不會根據httpcode來判斷接口請求成功與失敗的,而是會根據請求返回的數據,里面加上code字段

一、返回的數據格式對比

1、直接返回的數據格式

?
1
2
3
4
5
6
7
8
9
{
  "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、我們自己包裝后的返回數據

?
1
2
3
4
5
6
7
8
9
10
11
12
13
{
 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、使用命令創建一個過濾器

?
1
nest g f filters/httpException

2、過濾器的代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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中全局注冊

?
1
2
3
4
5
6
7
8
9
...
import { HttpExceptionFilter } from './filters/http-exception.filter';
 
async function bootstrap() {
 ...
 // 全局注冊錯誤的過濾器
 app.useGlobalFilters(new HttpExceptionFilter());
}
bootstrap();

4、測試,返回的錯誤信息

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
 "statusCode": 400,
 "error": "Bad Request",
 "data": {
  "message": [
   {
    "age": "必須的整數"
   }
  ]
 },
 "message": '請求失敗',
 "code": 1,
 "url": "/api/v1/cat"
}

三、統一請求成功的返回數據

1、創建一個攔截器src/interceptor/transform.interceptor.ts

2、攔截器的代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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、全局注冊

?
1
2
3
4
5
6
7
8
9
10
...
import { TransformInterceptor } from './interceptor/transform.interceptor';
 
async function bootstrap() {
 ...
 // 全局注冊攔截器
 app.useGlobalInterceptors(new TransformInterceptor());
 ...
}
bootstrap();

4、測試返回數據

?
1
2
3
4
5
6
7
8
9
10
11
12
13
{
 "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返回給前端數據格式內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/kuangshp128/article/details/97240664

延伸 · 閱讀

精彩推薦
  • js教程微信小程序自定義modal彈窗組件的方法詳解

    微信小程序自定義modal彈窗組件的方法詳解

    這篇文章主要給大家介紹了關于微信小程序自定義modal彈窗組件的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學...

    遇見小美好12212021-12-15
  • js教程JavaScript實現滑塊驗證解鎖

    JavaScript實現滑塊驗證解鎖

    這篇文章主要為大家詳細介紹了JavaScript實現滑塊驗證解鎖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    努力的黑皮4772021-12-27
  • js教程JS中箭頭函數與this的寫法和理解

    JS中箭頭函數與this的寫法和理解

    這篇文章主要給大家介紹了關于JS中箭頭函數與this的寫法和理解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需...

    limingru10422021-12-31
  • js教程一文搞懂JavaScript中的Typeof用法

    一文搞懂JavaScript中的Typeof用法

    typeof 運算符是 JavaScript 的基礎知識點,盡管它存在一定的局限性(見下文),但在前端js的實際編碼過程中,仍然是使用比較多的類型判斷方式。...

    鋒享前端8212021-12-29
  • js教程JavaScript實現點擊出現子菜單效果

    JavaScript實現點擊出現子菜單效果

    這篇文章主要為大家詳細介紹了JavaScript實現點擊出現子菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    weixin_551084226212022-01-19
  • js教程JavaScript中展開運算符及應用的實例代碼

    JavaScript中展開運算符及應用的實例代碼

    這篇文章主要介紹了JavaScript中展開運算符及應用的實例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以...

    banana peel9472021-12-31
  • js教程五種使 JavaScript 代碼庫更干凈的方法

    五種使 JavaScript 代碼庫更干凈的方法

    今天向大家介紹5種使JavaScript代碼庫更干凈的方法,一起來看一下都有哪些吧!...

    Mason程10652021-12-29
  • js教程微信小程序之高德地圖多點路線規劃過程示例詳解

    微信小程序之高德地圖多點路線規劃過程示例詳解

    這篇文章主要介紹了微信小程序之高德地圖多點路線規劃過程示例詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的...

    heli步籬6722022-01-04
主站蜘蛛池模板: 亚洲二区不卡 | 爽爽淫人综合网网站 | 逼片| 久久不雅视频 | 中文字幕综合 | 久久人人做 | 成年免费视频黄网站在线观看 | 国产理论视频在线观看 | 日韩精品一区二区三区中文 | 精品成人免费视频 | 欧美一级片 在线播放 | 一本色道精品久久一区二区三区 | a黄色网 | 黄色影院在线看 | 久久成年人视频 | 欧美性色黄大片www 成人免费网站在线观看 | 成年人免费视频播放 | 男女羞羞视频在线免费观看 | 手机在线看片国产 | 99精品国产一区二区三区 | 美女av在线免费观看 | 欧美一级特黄特色大片免费 | 黄色三级网站 | 国产精品中文在线 | 操网| 中文日韩欧美 | 国产精品一区二区x88av | 黄在线观看在线播放720p | 久久99偷拍视频 | 日本aaaa片毛片免费观看视频 | 亚洲综合一区在线观看 | 午夜视频久久久 | 99这里精品 | 成人国产精品齐天大性 | 欧美黄成人免费网站大全 | 亚洲爱爱网站 | 免费a级毛片永久免费 | 黄色av片在线观看 | 欧美aⅴ在线观看 | 久久男人天堂 | 极品一级片 |