文档中心
探索 DWeb 框架的无限可能,构建下一代高性能 Web 应用
路由级中间件 (_middleware.ts)
DWeb 框架支持路由级中间件,通过创建 `_middleware.ts` 文件,可以为特定路径及其子路径应用中间件。
基本概念
路由中间件文件使用 _middleware.ts 命名约定,放置在路由目录中。中间件会自动应用到该目录及其所有子目录的请求。
中间件文件结构
Code
中间件继承顺序
当访问 /users/123 时,中间件的执行顺序为:
routes/_middleware.ts(根中间件)routes/users/_middleware.ts(用户路由中间件)
中间件会按照从根到具体路径的顺序执行。
创建路由中间件
单个中间件
Code
多个中间件(数组)
Code
路由中间件示例
认证中间件
Code
请求日志中间件
Code
速率限制中间件
Code
中间件执行顺序
路由中间件会在以下时机执行:
- 全局中间件(通过
server.use()添加) - 路由中间件(从根到具体路径,按路径层级顺序)
- 路由处理器(页面组件或 API 处理器)
路由中间件 vs 全局中间件
| 特性 | 路由中间件 (_middleware.ts) | 全局中间件 (server.use()) | |------|---------------------------|--------------------------| | 作用范围 | 特定路径及其子路径 | 所有请求 | | 配置位置 | 路由目录中 | main.ts 或配置文件中 | | 路径匹配 | 自动匹配路径层级 | 需要手动配置路径匹配 | | 适用场景 | 路径特定的逻辑(如认证、日志) | 全局功能(如 CORS、压缩) |
最佳实践
- 使用路由中间件处理路径特定的逻辑:认证和授权、路径特定的日志记录、路径特定的速率限制
- 使用全局中间件处理通用功能:CORS 配置、全局错误处理
- 合理组织中间件:将认证中间件放在需要保护的路径、将日志中间件放在需要记录的路径、避免在根路径放置过多中间件