URL路由

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

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

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

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

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

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

这里有个例子:

 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 

显示路由

构建应用程序后,以下命令将显示当前的路由信息​​。

 $ treefrog --show-routes
 Available controllers:
   match   /blog/index  ->  blogcontroller.index()
   match   /blog/show/:param  ->  blogcontroller.show(id)
   match   /blog/create  ->  blogcontroller.create()
   match   /blog/save/:param  ->  blogcontroller.save(id)
   match   /blog/remove/:param  ->  blogcontroller.remove(id)