Laravel框架中如何在不修改源码的情况下实现动态路由?
描述:
比如goods/v1/list,这样的路径就会自动映射到V1/GoodsController命名空间下的list方法。
提示:
需要了解Laravel的路由实现,可以通过继承Illuminate\Routing\Router并替换默认的路由实例的方式来实现。
参考答案:
1.创建VersionRouter继承Illuminate\Routing\Router
2.注册到路由服务提供者
3.http内核重写dispatchToRouter方法
4.添加路由
备注:参考的代码中只动态了版本号,其实也可以进一步完善规则,实现控制器以及方法名的动态识别。