当前位置: 首页 > wzjs >正文

phpcms校园网站3d全景网站怎么做

phpcms校园网站,3d全景网站怎么做,建站平台有哪些,网站的建设怎么弄🔄 NestJS 系列教程(四):中间件、中断器与异常过滤器详解 ✨ 本篇目标 你将学会: 什么是中间件(Middleware),如何拦截请求什么是异常过滤器(Exception Filters&#xff0…

🔄 NestJS 系列教程(四):中间件、中断器与异常过滤器详解

✨ 本篇目标

你将学会:

  • 什么是中间件(Middleware),如何拦截请求
  • 什么是异常过滤器(Exception Filters),如何统一处理错误
  • Nest 中的请求生命周期是怎样的
  • 编写全局/模块级中间件与异常处理器

🚦 1. 中间件(Middleware)

什么是中间件?

中间件是一个在请求到达处理函数之前被调用的函数。你可以用它来记录日志、验证请求、添加请求数据等。

中间件的特征:

  • 类似 Express 的中间件函数 (req, res, next)
  • 可以访问请求与响应对象
  • 必须手动调用 next() 才会进入下一个处理阶段

🛠️ 编写中间件

示例:日志中间件 logger.middleware.ts

src/common/middleware/logger.middleware.ts 文件中创建:

import { Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';@Injectable()
export class LoggerMiddleware implements NestMiddleware {use(req: Request, res: Response, next: NextFunction) {console.log(`[Request] ${req.method} ${req.originalUrl}`);next();}
}

🔧 应用中间件(模块级注册)

cats.module.ts 中添加:

import { Module, NestModule, MiddlewareConsumer } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
import { LoggerMiddleware } from '../common/middleware/logger.middleware';@Module({controllers: [CatsController],providers: [CatsService],
})
export class CatsModule implements NestModule {configure(consumer: MiddlewareConsumer) {consumer.apply(LoggerMiddleware).forRoutes('cats'); // 仅拦截 /cats 路由}
}

可以通过 .forRoutes() 控制中间件作用范围,如所有 GET 路由、指定控制器、指定路径等。


🧨 2. 异常过滤器(Exception Filters)

默认行为

Nest 默认抛出的异常会被自动转化为 JSON 格式:

{"statusCode": 400,"message": "some error","error": "Bad Request"
}

但你可以创建自定义异常处理逻辑。


编写自定义异常过滤器

创建 common/filters/http-exception.filter.ts

import {ExceptionFilter,Catch,ArgumentsHost,HttpException,
} from '@nestjs/common';
import { Request, Response } from 'express';@Catch(HttpException)
export class HttpExceptionFilter implements ExceptionFilter {catch(exception: HttpException, host: ArgumentsHost) {const ctx = host.switchToHttp();const response = ctx.getResponse<Response>();const request = ctx.getRequest<Request>();const status = exception.getStatus();const errorResponse = {success: false,timestamp: new Date().toISOString(),path: request.url,message: exception.message,};response.status(status).json(errorResponse);}
}

✍️ 应用异常过滤器

方法级

@Post()
@UseFilters(HttpExceptionFilter)
create(@Body() dto: CreateCatDto) {throw new BadRequestException('手动抛出异常示例');
}

控制器级

@UseFilters(HttpExceptionFilter)
@Controller('cats')
export class CatsController {}

全局注册(推荐)

main.ts 中添加:

import { HttpExceptionFilter } from './common/filters/http-exception.filter';async function bootstrap() {const app = await NestFactory.create(AppModule);app.useGlobalFilters(new HttpExceptionFilter());await app.listen(3000);
}

🔁 3. Nest 请求生命周期简图

一个请求在 Nest 应用中经历以下流程:

客户端请求↓
中间件 (Middleware)↓
守卫 (Guards)↓
拦截器 (Interceptors)↓
管道 (Pipes)↓
控制器方法 (Controller)↓
服务 (Service)↑
异常过滤器 (ExceptionFilter)(如有异常)↑
响应客户端

本章主要关注中间件与异常过滤器,后续我们将逐步引入守卫、拦截器、管道的深入使用。


✅ 本篇小结

本章我们学习了:

  • 如何编写并应用 Nest 的中间件(Logger)
  • 理解并实现异常过滤器(统一错误响应格式)
  • 掌握 Nest 请求生命周期的关键阶段

🔮 下一篇预告

第5篇:守卫(Guards)与认证逻辑实现(基于角色与 JWT)

下一篇将介绍如何使用 Guards 实现路由级权限控制、角色限制、以及 JWT 用户验证机制。


文章转载自:

http://elz5jP6E.nqcwz.cn
http://NnSaBP15.nqcwz.cn
http://JCXpAtwq.nqcwz.cn
http://diNhm8DO.nqcwz.cn
http://UfuaYDmd.nqcwz.cn
http://HXVDqNXL.nqcwz.cn
http://CILDh7BZ.nqcwz.cn
http://im6DvYTH.nqcwz.cn
http://XGf8KT7J.nqcwz.cn
http://Bih8wKVn.nqcwz.cn
http://2jmnAJNP.nqcwz.cn
http://I7Oi93UN.nqcwz.cn
http://nuD6uwc1.nqcwz.cn
http://cK0jiuY8.nqcwz.cn
http://KJLfTp9V.nqcwz.cn
http://drmNIDA3.nqcwz.cn
http://anyTU3Ix.nqcwz.cn
http://onqSeohH.nqcwz.cn
http://e9R6gb4j.nqcwz.cn
http://ryrRmisw.nqcwz.cn
http://E2rhYbWM.nqcwz.cn
http://7cgJ6Jj5.nqcwz.cn
http://8ghGGxRP.nqcwz.cn
http://j0ERXrk5.nqcwz.cn
http://QFrFYBNJ.nqcwz.cn
http://UqPZyhQR.nqcwz.cn
http://jsPtVFvh.nqcwz.cn
http://pDi4RfBs.nqcwz.cn
http://nw03xX2P.nqcwz.cn
http://ShocztnD.nqcwz.cn
http://www.dtcms.com/wzjs/649829.html

相关文章:

  • 网站更换备案专业网页设计模板
  • 长春市住房和城乡建设厅网站婚纱网页制作
  • 如何做正规的采集网站长沙电商运营公司排名
  • 网站更改建设方案模板2018网站建设行业
  • 电子商务与网站建设的发展综述教育咨询网站模板
  • jsp网站搭建建立平台网站要多久
  • 和外国人做ic生意的网站网站模板建设
  • 南宁做网站外包公司网站建设的方案
  • 福州软件优化网站建设自己的电脑做网站可以吗
  • 企业网站颜色免费浏览的网站
  • 企业网站建设介绍做信息图的网站有哪些
  • 青岛网站建设有哪些公司给公司做网站 优帮云
  • 福州智能建站给别人做网站做什么科目
  • 旅游网站设计分析网站建设工作室07fly
  • asp网站开发网站框架类型
  • 南京做网站南京乐识最优网络营销策划有哪些
  • 响应式网站建设策划注册公司取名字
  • 美食健康网站的建设wordpress cdn 部署
  • 电子商务网站开发的任务书小程序外包
  • 网站前端设计培训开网店的流程和费用
  • 如何进入优容网站网站诊断与检测
  • 陶瓷网站开发背景漳州市长泰县建设局网站
  • 市住房和城乡建设局网站网页微博怎么发微博
  • 网站环境配置北京网站备案域名
  • 有免费可以做的网站吗有没有好的做海报的网站
  • 宁波网站开发建设公司云南网络推广报价明细
  • 广告网站建设网如皋网页设计
  • 新建的网站百度搜索不到中天建设集团有限公司广西分公司
  • 石家庄城市建设投资中心网站wordpress美化主题下载
  • 郑州网站开发的公司制作人漫画