php Hyperf框架如何通过路由文件注册路由?
在 Hyperf 里,「注解路由」与「routes.php 文件路由」是两条完全独立的注册通道:
-
注解由框架启动时扫描类产生,不写任何 routes.php 代码即可生效;
-
routes.php 是手动写
\Hyperf\HttpServer\Router\Router的静态方法,与注解无关,但可以和注解共存。
下面把「routes 文件」里如何手写 GET / POST / PUT / DELETE / PATCH 一次讲透,并给出与注解混用的最佳实践。
一、routes.php 文件位置
二、5 种动词的专用写法(推荐)
三、批量注册(路由组 + 多动词)
四、一条路由同时支持多种动词
五、中间件、参数约束、命名路由(文件路由独享)
六、与「注解路由」混用注意事项
-
两者互不冲突,最终路由表 = 文件路由 ∪ 注解路由;
-
如果
path相同且method也相同,后注册的被忽略(框架会报警告); -
生产环境建议 二选一:
-
快速 CRUD → 用注解;
-
需要集中管理、动态生成、版本号分组 → 用文件路由;
-
-
调试命令统一用【查看路由列表】:
可看到
Origin=Annotation或Origin=Config来区分来源。
七、一张速查表
| 动词 | 文件写法(最简洁) | 对应注解写法(类里) |
|---|---|---|
| GET | Router::get($uri,$callback) |
#[GetMapping(path:"..")] |
| POST | Router::post($uri,$callback) |
#[PostMapping(path:"..")] |
| PUT | Router::put($uri,$callback) |
#[PutMapping(path:"..")] |
| PATCH | Router::patch($uri,$callback) |
#[PatchMapping(path:"..")] |
| DELETE | Router::delete($uri,$callback) |
#[DeleteMapping(path:"..")] |
结论
想在 routes.php 里手写 GET、POST、PUT、DELETE、PATCH 仅需记住:
-
动词专用方法(
Router::get/post/put/patch/delete) -
或用
Router::addRoute([...], $uri, $ctrl)一次多个动词 -
支持路由组、中间件、参数正则、命名路由,功能与注解互补,按需选择即可 。
本文来自博客园,作者:Carvers,转载请注明原文链接:https://www.cnblogs.com/carver/articles/19113204

浙公网安备 33010602011771号