2.2版本注解路由结构的建议

Mickeywaugh

注解路径

看到2.2版本加入了注解路由,很惊喜。曾尝试将symfony中的注解路由做成插件来使用,但要实现Symfony\Component\Routing\Attribute\Route的使用方法,能力和精力都不够,中途而废。作为symfony框架的老用户给出几个建议,供参考。
1.引入的太多support\annotation\route命名空间下的类名。建议只引用support\annotation\route\Route类,并将GET,POST,这些作为method参数来定义方法。或者直接参照Symfony的Attribute路由。RouteGroup的引用同理。
2.将路由表放至config/route.php中,从代码管理上来说,集中管理是好的理念,但并不是很好的实操。因为程序员定位某个路由的需求,往往是因需要查看或修改路由方法而引起。路由定义和路由方法放一起,有点实物和标签绑定的意思。

Eg:
#[Route('user/{code}', name: 'getUserByCode', methods: ['POST', 'GET'], requirements: ['code' => '\w+'])]
163 1 0
1个回答

sm2010

说实话,没太明白你在表达什么。

我的理解如果只想限定一种HTTP访问方法,直接用方法名做注解最简单

#[Post('/user')]

#[Route('/user', methods: ['post'])]

简洁多了啊

如果要支持多种方法,可以用

#[Route('/user', methods: ['post', 'get'])]

不过

#[Post('/user')]
#[Get('/user')]

也很简洁

最后,既然你既允许Post 又允许Get,直接

Any('/user');

最简单

还有我觉得 config/route.php 管理路由最方便,整个项目有哪些路由一目了然。
要编辑哪个直接 ctrl 点击方法名直接跳转到具体实现代码了。

如果是注解路由,我还要整个项目搜索关键字,然后再定位代码了,注解路由反而不方便。

  • luoyue 2026-02-24

    Route注解有的,Post、Get那些注解都是在Route注解上做了一个封装,就像楼上说的,只是做了一些简化

🔝