URL路由

URL路由是一种决定请求的URL如何调用操作(action)的一种机制. 从浏览器收到一个请求后, 将使用路由规则进行URL检查, 如果匹配规则, 根据规则定义的操作(action)将被调用. 如果没有指定操作(action), 默认的操作将会被调用.

下面是这些默认规则一点提示:

 /controller-name/action-name/argument1/argument2/ ...

让我们看看客户化的路由规则.

路由规则定义写在config/routes.cfg文件. 对于每一个入口, 指令, 路径和操作(action)是写成单行的. 指令是指选择match, get 或者 post.

此外, 以’#’开头的行表示注释行.

这里有个例子:

 match  "/index"  "Merge#index"

在这个例子中, 如果浏览器请求’/index’, 不论是POST请求还是GET请求, 控制器将返回Merge控制器的index操作(action). 接下来的例子定义了get指令:

 get  "/index"  "Merge#index"

在这个例子中, 路由规则仅在使用GET请求时才起作用. 如果是POST请求, 将会被拒绝.

类似地, 如果定义了一个Post指令, 仅对POST请求有效. GET请求将会被拒绝.

 post"/ index"" Merge# index"

下面的内容是关于如何传递参数给操作(action). 假设已经定义了下面的入口作为路由规则:

 get  "/search/:params"  "Searcher#search"

使用关键字’:params’是非常重要的.
例子/serach/foo/, 当使用GET请求, 一个serach操作带着参数被Searcher控制器调用.参数”foo”被传递. 类似地, /serch/foo/bar, 一个操作(action)带着两个参数(“foo” 和”bar”)将被调用

 /search/foo     ->   调用SearcherController的search("foo")
 /search/foo/bar ->   调用SearcherController的search("foo", "bar") of