极乐门资源网 Design By www.ioogu.com
一般开发过程中不不会根据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 "htmlcode">... 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": "请求成功" }
极乐门资源网 Design By www.ioogu.com
极乐门资源网
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
极乐门资源网 Design By www.ioogu.com
暂无nestjs返回给前端数据格式的封装实现的评论...
更新日志
2024年11月18日
2024年11月18日
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】