本站重新装修中……
2020/03/06 - - 暂无评论

路由是应用开发中比较关键的一个环节,其主要作用包括但不限于:

  • 让URL更规范以及优雅;
  • 隐式传入额外请求参数;
  • 统一拦截并进行权限检查等操作;
  • 绑定请求数据;
  • 使用请求缓存;
  • 路由中间件支持;

路由解析的过程一般包含:

  • 路由定义:完成路由规则的定义和参数设置;
  • 路由检测:检查当前的URL请求是否有匹配的路由;
  • 路由解析:解析当前路由实际对应的操作(方法或闭包);
  • 路由调度:执行路由解析的结果调度;

掌握路由主要是要掌握路由定义及参数设置,其它环节是由系统自动完成的。

路由的主体规划和定义应该尽可能在应用开发前完成,在后期可以进行路由的参数调整和规则增补。

路由定义文件

路由规则的注册必须在应用的路由定义文件中完成。路由定义和检测是针对应用的,因此如果你采用的是多应用模式,每个应用的路由都是完全独立的,并且路由地址不能跨应用(除非采用重定向路由)。

route目录下的任何路由定义文件都是有效的,分开多个路由定义文件并没有实际的意义,纯粹出于管理方便而已。默认的路由定义文件是route.php,但你完全可以更改文件名,或者添加多个路由定义文件。

├─route                 路由定义目录
│  ├─route.php          路由定义
│  ├─api.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

如果不做特殊说明的话,后面章节的例子都采用单应用模式或者多个入口应用举例,如果你是自动多应用的话请参考上面的实例进行URL地址调整。

路由配置文件

路由的配置文件独立为config目录下的route.php,如果是多应用模式则支持在应用配置的route.php设置,请注意路由配置文件和路由定义文件之间的区别。

关闭路由

如果你的某个应用不需要使用路由功能,那么可以在应用的app.php配置文件中设置:

// 关闭应用的路由功能
'with_route'    =>    false,

关闭某个应用的路由。路由关闭后,你只能使用默认的URL解析规则来访问。

    暂无评论,快来抢沙发吧!