路由
路由(Routing)负责将 HTTP 请求映射到对应的处理器(Controller 方法或闭包)。Viswoole 支持注解路由与编程式路由两种注册方式,并内置路由分组、动态参数、中间件管道、伪静态后缀、域名绑定、路由缓存与 API 文档自动生成能力。
两种注册方式
| 方式 | 适用场景 | 定义位置 |
|---|---|---|
| 注解路由 | 路由与控制器代码同处维护,自动发现 | 控制器类/方法上的 PHP 8 注解 |
| 编程式路由 | 集中管理、跨控制器聚合、全局兜底 | config/route/route.php |
两种方式可混合使用,最终合并为同一张路由表。路由初始化时框架会依次装载配置路由(router.route_config_files 指定的文件)与注解路由(扫描 app/Controller 目录)。
请求匹配流程
一次请求从进入到处理器的完整链路如下:
text
HTTP 请求
│
├─ 1. 路径规范化:去除尾部斜杠、逐段 URL 解码、大小写处理
├─ 2. 静态路由查表;未命中则按路径段数进入动态路由正则匹配
├─ 3. 校验请求方法 / 域名 / 伪静态后缀
├─ 4. 提取动态路由参数(如 /user/{id} 中的 id)
└─ 5. 依次执行 中间件管道 → 调用处理器(容器注入依赖)任何一步校验失败(未匹配、方法不允许、后缀不支持)都会回退到 Router::miss() 注册的兜底路由。
核心特性
- 多方法支持:
GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS,以及不限方法的any;同一路径可按不同方法注册多条路由 - 路由分组:公共前缀与中间件批量挂载,支持多层嵌套(
Router::group()与#[Controller]注解同源同规则) - 动态参数:
/user/{id}必选参数、/user/{id?}可选参数,可用正则约束格式 - 域名与后缀:路由可绑定生效域名与伪静态后缀(如
.html) - 路由缓存:注解路由编译结果序列化落盘,生产环境加速启动
- API 文档:基于注解与 PHPDoc 自动生成接口文档,可编程查询
文档导航
| 文档 | 类型 | 说明 |
|---|---|---|
| 路由配置 | 参考 | config/router.php 全部配置键与路由缓存机制 |
| 注解路由 | 参考 | #[Controller] / #[AutoController] / #[RouteMapping] 参数全表 |
| 编程式路由 | 操作指南 | Router 门面注册路由、动态参数、分组与兜底路由 |
| 中间件 | 操作指南 | 全局/服务级/路由级中间件注册与执行顺序 |
| API 文档生成 | 参考 | 参数、返回值结构的声明方式与文档查询接口 |
下一步
了解路由如何指向控制器后,可继续阅读:
