路由的类型 Route Type
无路由 No Route
HTTP请求直接定位到特定的脚本文件执行。比如http://domain/news/latest.php
动态路由
依据某种动态规则进行路由和分发,一般有如下形式:
强约束URL
将Class,function 等信息隐藏在url中,请求来时,依据规则解析URL就可以定位Action函数,比如http://domain/modelName/className/functionName
。
优点是简单,缺点是灵活性差,路由信息包含的少,比如拦截器、模版只能在action中写代码调用,不能集中配置。
依据注释信息自动路由
将路由信息,写到执行函数的注释里,请求来时,解析所有action函数的注释,找到合适的,再执行action函数。 Java Spring 和 PHP Symonfy 支持这种路由方式
注释的关键字有(举例)
- @url
- @template
- @filter
- @trigger
优点是维护起来比路由表简单,缺点是性能较低。
静态路由
路由配置写在配置文件中,依据配置文件,确定如何分发。
路由信息配置在配置文件中,文件或数据格式如下:
- PHP
- Yaml
- Xml
- Json
笔者最推荐的是 Yaml,因为Yaml 格式的可读性最高,最易于维护。
半静态半动态路由
动态和静态相结合的路由.
尤其是在URL解析中,使用正则匹配的路由方式。
路由的组成 Route Components
路由分发的元素
- URL , URL特征决定分发到特定Action函数
- Action 函数,函数所在的class、Namespace
- 模版 template ,页面渲染的模版
- 拦截过滤器,Filters , 比如权限检查、地区检查、无效请求检查等各类filter
- 触发器,triggers , 页面调用后触发的操作
URL 的组成
URL 包含着路由的关键信息,决定请求分发到具体的Action函数
MVC 框架的 URL 一般由下列部分组成
- 域名 domain name
- 模块/目录 model/directory name
- 功能 function name
- 参数 parameter
参数有两种形式存于http请求中,一种是作为POST和GET方法的参数,一种是直接在URL中。
Route Style
Restfull 的路由分发
遵循Rest 风格、规范的URl