Revel 路由routes


本文整理自网络,侵删。

路由定义在一个单独的 routes 文件中.

路由定义规则是:

(METHOD) (URL Pattern) (Controller.Action)

下面演示路由的定义:

# conf/routes
# 这个文件定义了应用程序的所有路由 (优先级按照先后顺序)
GET    /login                 App.Login              # 一个简单的路由
GET    /hotels/               Hotels.Index           # 一个简单的路由,带不带斜线后缀都一样
GET    /hotels/:id            Hotels.Show            # 绑定到一个URI参数id
WS     /hotels/:id/feed       Hotels.Feed            # WebSockets
POST   /hotels/:id/:action    Hotels.:action         # 自动匹配路由到一个控制器的多个方法
GET    /public/*filepath      Static.Serve("public") # 映射到 /public/下的静态文件
  • /:controller/:action :controller.:action # 捕获所有控制器方法; 自动生成 URL

接下来我们一个个看。最后在看看如何实现 反转路由 – 生成URL调用一个特定的方法

一个简单的路由

GET    /login                 App.Login

直接将一个URL精确匹配到一个控制器方法。

斜线后缀

GET    /hotels/               Hotels.Index

/hotels 和 /hotels/ 路由都会调用 Hotels.Index 方法。反转 Hotels.Index产生的URL则会包含斜线后缀。

斜线后缀无法用于区分两个同名路由,/login 和 /login/是一样的

URL 参数

GET    /hotels/:id            Hotels.Show

Revel可以从URL重提取参数并绑定到控制器方法。:id 变量会尝试匹配除了斜线后缀外的任意值。举个栗子,/hotels/123和 /hotels/abc 都与这个路由匹配。

提取的参数保存到 Controller.Params map中, 绑定到控制器方法Show中. 举个栗子:

func (c Hotels) Show(id int) revel.Result {
    ...
}

func (c Hotels) Show() revel.Result {
    var id string = c.Params.Get("id")
    ...
}

func (c Hotels) Show() revel.Result {
    var id int
    c.Params.Bind(&id, "id")
    ...
}

通配符

GET    /public/*filepath            Static.Serve("public")

路由器识别第二种通配符 。通配符必须放到路由的最后一个元素前, 匹配所有以*之前路径开头的URL

这里的路由将匹配 “/public/”和以他开头的所有路径

Websockets

WS     /hotels/:id/feed       Hotels.Feed

Websockets 以同样的方式接受请求, 它使用 WS标识符

相应的方法签名如下:

func (c Hotels) Feed(ws *websocket.Conn, id int) revel.Result {
    ...
}

静态文件服务

GET    /public/*filepath            Static.Serve("public")
GET    /favicon.ico                 Static.Serve("public","img/favicon.png")

对于使用2个参数的Static.Serve, 在  和 , 之间不允许有空格,due to how encoding/csv works.

阅读剩余部分

相关阅读 >>

Revel 参数验证

Revel 常见问题

Revel results

Revel 测试

Revel 版本控制

Revel 缓存cache

Revel 模板

Revel session flash

Revel 路由routes

Revel 命令行工具

更多相关阅读请进入《Revel》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...