问两个beego路由的问题

piaobochenai · · 3663 次点击
可能我说的不是很清楚,我再详细描述一下 1. 我想让所有的请求都进入一个过滤器,过滤器设置的路由是`/*`, 我原本以为这样所有的请求都可以匹配到,但是 `/abc' 这样的可以,但是直接使用 `localhost:9090` 这样的方式却进不去,看了源代码才发现 `*` 是被解析成`(.+)`这样的正则,所以 `*` 的位置必须存在至少一个字符,也就是说我需要通过 `localhost:9090/a` 这样的方式才能进过滤器。 2. 如果路由设置成`/download/*.*` 这样的,那么 `/download/index.html` 和 `download/indexhtml` (index后没有英文句号)这样的都是可以匹配到的(这个路由我设置到过滤器上了,然后看是不是可以进入到过滤器来测试的),源码中`*.*` 这样的会被解析成 `([^.]+).(.+)`,第二个 `.` 没有转义,不就是代表任意字符了吗,所以和我预期的有点不一样。
#5
更多评论
1、应该不会, `beego.Router(“/download/ceshi/*“, &controllers.RController{})` `*`全匹配方式 //匹配 `/download/ceshi/file/api.json :splat=file/api.json this.Ctx.Input.Param(":splat")` 应该是可以为空的,具体你测试一下不就知道了吗? 2、`beego.Router("/download/*.*", &controllers.RController{})` 这样应该可以吧
#1
1、应该不会, beego.Router(“/download/ceshi/*“, &controllers.RController{}) `*`全匹配方式 // 匹配 `/download/ceshi/file/api.json :splat=file/api.json this.Ctx.Input.Param(":splat")` 应该是可以为空的, 具体你测试一下. 2、`beego.Router(“/download/*.*”, &controllers.RController{})` 这样应该可以吧
#2