🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
路由是应用开发中比较关键的一个环节,其主要作用包括但不限于: * 让URL更规范以及优雅; * 隐式传入额外请求参数; * 统一拦截并进行权限检查等操作; * 绑定请求数据; * 使用请求缓存; * 路由中间件支持; 路由解析的过程一般包含: * 路由定义:完成路由规则的定义和参数设置; * 路由检测:检查当前的URL请求是否有匹配的路由; * 路由解析:解析当前路由实际对应的操作(方法或闭包); * 路由调度:执行路由解析的结果调度; 掌握路由主要是要掌握路由定义及参数设置,其它环节是由系统自动完成的。 >[danger] 路由的主体规划和定义应该尽可能在应用开发前完成,在后期可以进行路由的参数调整和规则增补。 ## 路由定义文件 路由规则的注册必须在应用的路由定义文件中完成。路由定义和检测是针对应用的,因此如果你采用的是多应用模式,每个应用的路由都是完全独立的,并且路由地址不能跨应用(除非采用重定向路由)。 >[info] `route`目录下的任何路由定义文件都是有效的,分开多个路由定义文件并没有实际的意义,纯粹出于管理方便而已。默认的路由定义文件是`route.php`,但你完全可以更改文件名,或者添加多个路由定义文件。 ~~~php ├─route 路由定义目录 │ ├─route.php 路由定义 │ ├─api.php 路由定义 │ └─... 更多路由定义 ~~~ 如果你使用了多应用模式,那么路由定义文件则放入应用目录下: ~~~php ├─app 应用目录 │ ├─app_name 应用目录 │ │ ├─common.php 函数文件 │ │ ├─controller 控制器目录 │ │ ├─model 模型目录 │ │ ├─view 视图目录 │ │ ├─config 配置目录 │ │ ├─route 路由目录 │ │ │ ├─route.php 路由定义 │ │ │ ├─api.php 路由定义 │ │ │ └─... 更多路由定义 ~~~ 多应用模式下面,如果你开启了自动多应用,路由的规则是指在URL地址的应用名之后的部分,也就是说URL中的应用名是不能省略和改变的,例如你在`index`应用中定义了路由。 ``` Route::rule('hello/:name', 'index/hello'); ``` 在没有开启自动多应用的情况下,URL地址是 ``` http://serverName/index.php/hello/think ``` 一旦你开启了自动多应用,那么实际的URL地址应该是 ``` http://serverName/index.php/index/hello/think ``` >[danger] 如果不做特殊说明的话,后面章节的例子都采用单应用模式或者多个入口应用举例,如果你是自动多应用的话请参考上面的实例进行URL地址调整。 ## 路由配置文件 路由的配置文件独立为`config`目录下的`route.php`,如果是多应用模式则支持在应用配置的`route.php`设置,请注意路由配置文件和路由定义文件之间的区别。 ## 关闭路由 如果你的某个应用不需要使用路由功能,那么可以在应用的`app.php`配置文件中设置: ~~~ // 关闭应用的路由功能 'with_route' => false, ~~~ 关闭某个应用的路由。路由关闭后,你只能使用默认的URL解析规则来访问。