revel框架中路由必须在conf/routes中按规范声明,get/post需分两行定义,路径参数用:id占位符,否则返回404;方法名不加括号,严格区分http动词。

要在Revel框架中正确配置GET和POST请求的路由,必须在conf/routes文件中按约定语法声明,否则请求无法被控制器捕获或直接返回404。
基础GET路由写法
打开项目根目录下的conf/routes文件,在末尾新增一行:
GET /hello App.Hello
这行表示:当浏览器访问/hello路径且使用GET方法时,交由App控制器的Hello方法处理。
注意:路径前的HTTP方法名必须大写,且与空格严格对齐;方法名后不能加括号,也不能写成Hello()。
基础POST路由写法
在conf/routes中另起一行,写入:
POST /login App.Login
这一行声明了仅接受POST方式提交到/login的请求,并路由至App控制器的Login方法。
【POST路由不会响应GET请求】 即使你用浏览器直接访问/login,也会返回404——因为Revel严格区分HTTP动词,不自动fallback。
同一路径支持GET+POST双方法
Revel不支持单行声明多方法(如GET|POST),必须拆成两行显式定义:
GET /form App.ShowForm
POST /form App.HandleForm
这种写法常见于表单场景:GET用于渲染空白表单页,POST用于接收提交数据。两个方法可同名也可不同名,但路径必须完全一致(包括末尾斜杠)。
如果只写其中一行,另一方法访问该路径时将触发404,不会隐式调用另一个方法。
带路径参数的动态路由配置
第一步:在conf/routes中添加带占位符的路由
GET /user/:id App.GetUser
第二步:在app/controllers/app.go中定义GetUser方法,需从c.Params中提取参数:
func (c App) GetUser() revel.Result {
id := c.Params.Get("id")
return c.RenderText("User ID: " + id)
}
第三步:启动服务后访问/user/123,即可看到输出。注意::id是命名占位符,实际匹配任意非斜杠字符串,不会做类型校验。











