nestjs返回給前端數(shù)據(jù)格式的封裝實(shí)現(xiàn)_第1頁
nestjs返回給前端數(shù)據(jù)格式的封裝實(shí)現(xiàn)_第2頁
nestjs返回給前端數(shù)據(jù)格式的封裝實(shí)現(xiàn)_第3頁
nestjs返回給前端數(shù)據(jù)格式的封裝實(shí)現(xiàn)_第4頁
nestjs返回給前端數(shù)據(jù)格式的封裝實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第nestjs返回給前端數(shù)據(jù)格式的封裝實(shí)現(xiàn)一般開發(fā)過程中不不會(huì)根據(jù)httpcode來判斷接口請(qǐng)求成功與失敗的,而是會(huì)根據(jù)請(qǐng)求返回的數(shù)據(jù),里面加上code字段

一、返回的數(shù)據(jù)格式對(duì)比

1、直接返回的數(shù)據(jù)格式

"id":1,

"uuid":"cbbe7abc-b95e-48a0-8d24-b1ac93c45328",

"name":"哈士奇1",

"age":12,

"color":null,

"createAt":"2025-07-25T09:13:30.000Z",

"updateAt":"2025-07-25T09:13:30.000Z"

2、我們自己包裝后的返回?cái)?shù)據(jù)

code:0,

message:"請(qǐng)求成功",

data:{

"id":1,

"uuid":"cbbe7abc-b95e-48a0-8d24-b1ac93c45328",

"name":"哈士奇1",

"age":12,

"color":null,

"createAt":"2025-07-25T09:13:30.000Z",

"updateAt":"2025-07-25T09:13:30.000Z"

二、攔截全部的錯(cuò)誤請(qǐng)求,統(tǒng)一返回格式

1、使用命令創(chuàng)建一個(gè)過濾器

nestgffilters/httpException

2、過濾器的代碼

import{

ArgumentsHost,

Catch,

ExceptionFilter,

HttpException,

HttpStatus,

Logger,

}from'@nestjs/common';

@Catch(HttpException)

exportclassHttpExceptionFilterimplementsExceptionFilter{

catch(exception:HttpException,host:ArgumentsHost){

constctx=host.switchToHttp();

constresponse=ctx.getResponse();

constrequest=ctx.getRequest();

constmessage=exception.message.message;

Logger.log('錯(cuò)誤提示',message);

consterrorResponse={

data:{

error:message,

},//獲取全部的錯(cuò)誤信息

message:'請(qǐng)求失敗',

code:1,//自定義code

url:request.originalUrl,//錯(cuò)誤的url地址

conststatus=

exceptioninstanceofHttpException

exception.getStatus()

:HttpStatus.INTERNAL_SERVER_ERROR;

//設(shè)置返回的狀態(tài)碼、請(qǐng)求頭、發(fā)送錯(cuò)誤信息

response.status(status);

response.header('Content-Type','application/json;charset=utf-8');

response.send(errorResponse);

3、在main.ts中全局注冊(cè)

import{HttpExceptionFilter}from'./filters/http-exception.filter';

asyncfunctionbootstrap(){

//全局注冊(cè)錯(cuò)誤的過濾器

app.useGlobalFilters(newHttpExceptionFilter());

bootstrap();

4、測(cè)試,返回的錯(cuò)誤信息

"statusCode":400,

"error":"BadRequest",

"data":{

"message":[

"age":"必須的整數(shù)"

"message":'請(qǐng)求失敗',

"code":1,

"url":"/api/v1/cat"

三、統(tǒng)一請(qǐng)求成功的返回?cái)?shù)據(jù)

1、創(chuàng)建一個(gè)攔截器src/interceptor/erceptor.ts

2、攔截器的代碼

import{

Injectable,

NestInterceptor,

CallHandler,

ExecutionContext,

}from'@nestjs/common';

import{map}from'rxjs/operators';

import{Observable}from'rxjs';

interfaceResponseT{

data:T;

@Injectable()

exportclassTransformInterceptorT

implementsNestInterceptorT,ResponseT{

intercept(

context:ExecutionContext,

next:CallHandlerT,

):ObservableResponseT{

returnnext.handle().pipe(

map(data={

return{

data,

code:0,

message:'請(qǐng)求成功',

}

3、全局注冊(cè)

import{TransformInterceptor}from'./interceptor/erceptor';

asyncfunctionbootstrap(){

//全局注冊(cè)攔截器

app.useGlobalInterceptors(newTransformInterceptor());

bootstrap();

4、測(cè)試返回?cái)?shù)據(jù)

"data":{

"id":1,

"uuid":"cbbe7abc-b95e-48a0-8d24-b1ac93c45328",

"name":"哈士奇1",

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論