路由

路由(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 文档生成参考参数、返回值结构的声明方式与文档查询接口

下一步

了解路由如何指向控制器后,可继续阅读:

  • 控制器:创建控制器与依赖注入
  • 容器:理解处理器参数如何被自动解析